類
繼承:
enxtends 父類 implements 接口
代碼復用
要點:
1.java里面只有單繼承
2.子類可以繼承父類的所有屬性和方法来庭,但是私有的不能被訪問
3.創(chuàng)建一個子類對象,父類對象不會被創(chuàng)建
4.this和super不能一起使用
構(gòu)造器:
1.默認情況下举农,類里面都有一個無參構(gòu)造器
2.this調(diào)用本類當中其他構(gòu)造器沪羔,必須寫在第一行
3.當在子父類當中,創(chuàng)建一個子類對象時椰弊,在第一行會調(diào)用父類的無參構(gòu)造器
當然也顯示調(diào)用父類的其他構(gòu)造器
super
- 代表父類對象 必須放在第一行
1.可以調(diào)用父類構(gòu)造器
2.可以調(diào)用父類屬性和方法(不能私有)
訪問控制修飾符
- private protected 默認 public
private: 修飾的屬性和行為只能在本類中使用
public: 修飾的屬性和行為可以再所有類中被訪問
protected
同包:修飾的行為和屬性可以被訪問
不同包: 除非是子類,才可以被訪問
多態(tài)
- 同一個方法根據(jù)運行時不同對象產(chǎn)生不同結(jié)果
多態(tài)產(chǎn)生的條件
1.繼承
2.方法重寫
3.父類引用指向子類對象(向上轉(zhuǎn)型)
實現(xiàn)技術(shù):
- 動態(tài)綁定:根據(jù)運行時對象調(diào)用相應(yīng)的方法
- 靜態(tài)綁定:方法重載 編譯期間根據(jù)參數(shù)來調(diào)用相應(yīng)的方法
方法重寫:存在繼承當中子父類
1.返回類型 方法名 參數(shù)列表都是一樣的
2.子類的訪問控制可以大于等于父類的訪問權(quán)限招狸,父類不能是私有方法
3.子類異常繼承父類異常(范圍縮屑等搿)
數(shù)據(jù)類型轉(zhuǎn)換
- instanceof 判斷運行期間該對象的類型(父類型)
自動轉(zhuǎn)換:父類引用指向子類對象
強制轉(zhuǎn)換:
關(guān)鍵字
- static 修飾的變量可以被所有實例共享(直播在線人數(shù)統(tǒng)計)
1.修飾變量
a.該變量是屬于類的,被所有對象實例所共享
b.可以通過(類名篓吁,變量名)訪問,或者對變量實例訪問
c.靜態(tài)變量放在方法區(qū)里面,而成員變量實在堆里面
2.修飾方法
a.靜態(tài)方法也是屬于類的
b.類名.方法名來訪問坡慌,或者被對象實例所訪問
c. 普通方法是可以訪問靜態(tài)變量或者靜態(tài)方法,靜態(tài)方法是不可以調(diào)用普通方法或者變量
d.靜態(tài)方法不能被重寫
3.修飾類
內(nèi)部類
- final
1.修飾變量
a.常量是不可以被修改的,對于引用類型指的是內(nèi)存地址不能被修改
b.修飾成員變量必須要初始化藻三,靜態(tài)常量(static final int CUNNTER = 2;
)變量名一般大寫
2.修飾方法
a.父類當中被final修飾的方法不能被重寫
3.修飾類
- String 不能被繼承
抽象類
- abstract ?就是用來被繼承的
1.抽象類本質(zhì)上還是類
2.抽象類中可以沒有抽象方法洪橘,有抽象方法的類一定是抽象類
3.抽象方法一定要被子類重寫
接口
- 一個類現(xiàn)在需要繼承多個類
1.解決多繼承問題
2.面向接口繼承
jdk1.8之前的語法
- 成員變量:默認修飾符都是public static final
- 成員方法:都是抽象方法,修飾符默認是public
3.實現(xiàn) implements
4.接口與接口 extends