1、關鍵字
一、final
修飾類 |
修飾變量 |
修飾成員方法 |
該類爲最終類,不能被繼承 |
該變量爲常量 |
該成員方法不能被重寫 |
二、static
(1)、生命週期
隨着類的加載而加載
(2)、特色
被本類全部對象共享
使用方式:類名.靜態成員
在實例化對象前被加載
(3)、成員特色
靜態方法中只能使用靜態成員
非靜態方法中可使用靜態成員也可使用非靜態成員
靜態方法中不能使用this、super(由於此時對象尚未建立,先進內存的不能方位後進內存的)
2、抽象類
一、概念
抽象類之子類的共性,在抽象類中申明某些行爲,子類去實現
//例子
public abstract class Person{
public abstract speak();//無方法體,該方法須要子類去重寫
}
二、特色
抽象類不能直接建立對象(能夠經過多態進行建立)
抽象類中能夠沒有抽象方法,也能夠有非抽象方法
有抽象方法的必定是抽象類
抽象類的子類要麼重寫抽象類的全部抽象方法,要麼也是個抽象類
三、成員特色
成員 |
備註 |
成員變量 |
能夠爲變量或者常量 |
成員方法 |
能夠爲抽象方法或者非抽象方法 |
構造方法 |
抽象類中的構造方法是爲了子類初始化的時候調用來完成抽象類的成員初始化 |
四、注意
abstract不能與private和static一塊兒使用,由於後面兩種不能重寫
3、接口
一、概念
接口是爲了擴展在事物共性之外的行爲。
public interface Play{
public abstract void Basketball();//接口中只能定義抽象方法
}
//實現類
public class Person implements Play{
public void Basketball(){
...
}
}
二、接口特色
一、接口不能直接建立對象
二、接口和類是實現關係
三、接口的實現類要麼重寫接口的全部抽象方法,要麼是一個抽象類
四、接口能夠多繼承
三、成員特色
成員 |
備註 |
成員變量 |
只能是常量 |
成員方法 |
只能是抽象方法 |
構造方法 |
沒有構造方法,由於接口成員變量是常量,不須要初始化 |
4、抽象類和接口
一、相同點
都不能夠被實例化
二、不一樣點
類型 |
區別 |
成員變量 |
抽象類:變量、常量 接口:常量 |
成員方法 |
抽象類:抽象、非抽象 接口:抽象方法 |
構造函數 |
抽象類:有。構造函數是子類初始化的時候調用初始化抽象類成員 接口:無。接口不須要初始化,由於成員變量都是常量 |
設計理念 |
抽象類:子類的共性(子類 is 抽象類) 接口:擴展(實現類 like 接口) |
5、關係
一、類和類
單繼承、多層繼承
二、類和接口
單實現、多實現、多層實現
三、接口和接口
單繼承、多繼承
6、權限修飾符
權限修飾符 |
同包同類 |
同包(子類和無關類) |
不一樣包(子類) |
不一樣包(無關類) |
public |
Y |
Y |
Y |
Y |
protected |
Y |
Y |
Y |
|
默認 |
Y |
Y |
|
|
private |
Y |