怎樣申請(qǐng)做p2p融資網(wǎng)站中國培訓(xùn)網(wǎng)
目錄
繼承:
super關(guān)鍵字:
方法重寫:
繼承特點(diǎn):
繼承構(gòu)造方法:
final關(guān)鍵字:
繼承:
意義:讓類于類之間產(chǎn)生父類于子類的關(guān)系,子類可以直接使用父類中的非私有成員(包括方法與成員變量)? 。
extends關(guān)鍵字就是定義聲明父類。
格式:public class 子類 extends 父類。
?
對(duì)于基礎(chǔ)的我就不贅述了,我們直接講一些實(shí)用一點(diǎn)的操作。
super關(guān)鍵字:
舉個(gè)例子
class Fu{int num=10;
}class Zi extends Fu
{int num=20;public void Fuc(){System.out.println(num);}
}public static void main(String[] args) {Zi z1=new Zi();z1.Fuc();}
這里面的主方法會(huì)打印什么呢?
如果我們想打印父類里的10我們需要用到super
結(jié)果就會(huì)變?yōu)?0
可見super可以用來區(qū)分父子類里面的相同成員。
方法重寫:
這里的方法重寫與方法重載不一樣喲!
當(dāng)字父子類出現(xiàn)完全一摸一樣的方法時(shí), 在創(chuàng)建子類對(duì)象調(diào)用方法時(shí)會(huì)優(yōu)先調(diào)用子類的方法的邏輯。這其實(shí)就是子類的方法對(duì)父類的方法進(jìn)行了方法重寫。且我們通過@override識(shí)別方法重寫。
如:父子類都有Fuc方法
?
class Fu{int num=10;public void Fuc(){System.out.println("666");}
}class Zi extends Fu
{int num=20;@Override//如果這沒報(bào)錯(cuò)就是方法重寫public void Fuc(){System.out.println(555);}
}public static void main(String[] args) {Zi z1=new Zi();z1.Fuc();}
打印的是555
那我們?cè)趺凑{(diào)用到父類的方法呢,就是用super
?
class Zi extends Fu
{int num=20;@Overridepublic void Fuc(){super.Fuc();System.out.println(555);}
}
兩個(gè)方法都打印了。
其實(shí)方法重寫作用就是我們對(duì)父類方法的修改和增強(qiáng)。
tip:私有的父類不能重寫,子類在重寫時(shí)訪問權(quán)限一定要大于等于父類的方法。
繼承特點(diǎn):
Java繼承只支持單繼承,不支持多繼承,但支持多層繼承。
單繼承,多繼承:就是只能繼承一個(gè)父類,不能繼承多個(gè)類。
多層繼承就像這個(gè)圖一樣:
繼承構(gòu)造方法:
構(gòu)造方法不支持繼承,所以構(gòu)造方法需要自己寫,子類在初始化之前需要對(duì)父類進(jìn)行初始化,而且所有的類構(gòu)造方法中有隱藏了一句supper()代碼,這是用來調(diào)用父類的無參構(gòu)造。
?
我們先簡(jiǎn)單理解一下super();
class Fu{int a;int b;public Fu() {}
}class Zi extends Fu
{int c;int d;public Zi() {}public void Func(){System.out.println(""+a+b+c+d);}
}public static void main(String[] args) {Zi z1=new Zi();z1.Func();}
這次會(huì)打印什么呢?
可見他將abcd全部都初始化了,就證明了調(diào)用了子父類的無參構(gòu)造。
?
那為什么說所有類都有super()呢?
其實(shí)所有的類,直接或間接的繼承了object類,這里不多說,但是可以證明的是每個(gè)類都有除本身外其他的一些方法如:
final關(guān)鍵字:
對(duì)于final關(guān)鍵字其實(shí)就感覺像是c/c++里的const
特性:
1.修飾方法就表明是最終方法,該方法不能被重寫。
2.修飾類就表明是最終類,該類不能被繼承。
3.修飾變量說明是常量,不能再次被賦值(類似于const修飾的變量)。
tip:final修飾成員變量時(shí)不能被修飾默認(rèn)值,說明就被修飾的變量一定要初始化,要么直接聲明定義在一起,要么在構(gòu)造方法里初始化。
final修飾的規(guī)范:全用大寫,用下劃線來分割單詞如:MAX_NUM