10-3 繼承入門(mén)-重寫(xiě)
注解@Override
10-4 繼承-子類構(gòu)造
super超類-->指向父類
子類創(chuàng)建會(huì)默認(rèn)調(diào)用父類空參構(gòu)造
任何一個(gè)類都會(huì)繼承一個(gè)頂級(jí)父類Object
10-5 繼承-父子類構(gòu)造器問(wèn)題
若父類的constructor被重載,則子類要在構(gòu)建一個(gè)constructor
10-6 類的加載順序
1)父類靜態(tài)字段 2)父類靜態(tài)代碼塊 3)子類靜態(tài)字段 4)子類靜態(tài)代碼塊 5)父類成員變量 6)父類非靜態(tài)代碼塊 7)子類成員變量 8)子類非靜態(tài)代碼塊 9)子類構(gòu)造器
靜態(tài)代碼塊:類加載時(shí)會(huì)調(diào)用。第一次主動(dòng)使用這個(gè)類就會(huì)加載代碼到內(nèi)存
static{}
非靜態(tài)代碼塊
{。。。}
10-7 引用類型比較內(nèi)容
String a = "a";
String b = "a";
(a==b)是true因?yàn)閍和b同時(shí)指向內(nèi)存中的“a”
如果String c = new String("a");
(a==c)是false因?yàn)閏中的“a“存在了內(nèi)存的另一片區(qū)域
引用數(shù)據(jù)類型不能用==來(lái)比較
10-8 equals方法
public boolean equals(Object obg){
? ? Father father;
? ? if(obj instance of Father) {
? ? ? ? father = (Father)obj;
? ? ? ? if(this.getHobby().equals(father.getHobby())){
? ? ? ? ? ? return true;
????????}
????}
}
10-9 instanceof和對(duì)象轉(zhuǎn)型
if(father instanceof Father)
father是Father類的實(shí)例(instanceof問(wèn)father是不是Father類型)
son instance of Father = true
所有的子類均屬于父類(因?yàn)樽宇愑筛割惍a(chǎn)生)
父類不屬于子類
10-10 Object的toString和HashCode
hashCode()把對(duì)象變成數(shù)字
如果想打印一個(gè)類的內(nèi)容,要重寫(xiě)toString()
11-1 初入多態(tài)
1)有繼承
2)有重寫(xiě)
3)有父類引用指向子類對(duì)象
Father f = new Son();
f.smoke(); //調(diào)用son的soke
多態(tài)是同一個(gè)行為具有多個(gè)不同表情形式或形態(tài)能力
ex 在現(xiàn)實(shí)中摁下F1
-在Word程序下彈出Word幫助
-在Windows程序下就彈出Windows幫助
11-2 接口和抽象類
抽象類:類中包含沒(méi)有方法體的方法
public abstract void eat();
如果一個(gè)類所有的方法都是抽象的,則這個(gè)類為interface(接口)
public interface Animal(){}
public class Cat implements Animal(){}
11-3 數(shù)據(jù)結(jié)構(gòu)鏈表
數(shù)組:通過(guò)下標(biāo)快速進(jìn)行操作
鏈表:更快速插入,刪減