java學習之路————第十二天
今天我們接觸到final關鍵字,抽象類和抽象方法,遞迴演算法以及介面
一、final關鍵字
1.final修飾類,該類不能被繼承 如:String
2.final修飾方法,該方法不能被重寫
3.final修飾變數,該變數為常量。往往和static一起,因為可以直接通過類名.變數名訪問。
備註:常量名全部用大寫字母表示。
final修飾變數有兩種初始化方式:
a.直接初始化
b.通過構造方法初始化
例: public class Demo{
final static int a = 100;
main(){
Demo d = new Demo();
syso(d.a);
}
}
二、抽象類和抽象方法
由來:因為類繼承,大都要重寫父類中的成員方法,導致父類中的成員方法對我們來說意義不大,還佔用資源。此時有沒有一種方式來解決這個問題。此時抽象類和抽象方法上場。具體的實現內容由子類繼承時去重寫抽象方法即可。
抽象類和抽象方法用關鍵字abstract表示
抽象方法:只有方法名沒有方法體的方法稱為抽象方法
語法:許可權修飾符 abstract 返回值型別 方法名();
抽象類:有抽象方法的類一定是抽象類
子類繼承抽象類的時候注意事項:
1.子類是普通類,必須重寫父類中的抽象方法
2.子類也是抽象類的話,可以不重寫父類的抽象方法
3.抽象類不能new
為什麼需要抽象類抽象方法?
將多個類中共同的行為封裝在一起,不需要寫具體的實現程式碼,由各個類去繼承這個封裝好的類,然後自行實現想要的結果。
三、遞迴演算法
一句話概括:自己調自己
古典問題:有一對兔子,從出生後第三個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,加入兔子都不死,問每個月的兔子總數是多少?
程式分析:兔子的規律為數列:1,1,2,3,5,8,13,21.。。。。
程式碼:
int sum = 0;
public int number(int month){
if(month==1||month==2){
return sum = 1;
}
return sum=number(month-1)+number(month-2);
}
四、介面
介面是一個特殊的抽象類。
1.介面中的不能宣告變數,只能宣告常量
2.介面中的所有方法都是抽象方法
3.介面不能new
4.沒有構造方法
5.介面可以多繼承 介面與介面之間用逗號隔開
6.介面可以多實現 介面與介面之間用逗號隔開
用關鍵字interface來表示介面。
如何實現介面?用關鍵字implements去實現。
實現介面,必須重寫裡面的所有抽象方法
案例: 老師和學生
分析:
老師類:姓名 年齡 吃飯 睡覺
學生類:姓名 年齡 吃飯 睡覺
從具體類到抽象類:
將具有共性的功能封裝在抽象類中 父類 Person類
額外的抽菸功能,不是所有的老師或同學都抽,不具體共性。
此時可以將該功能封裝在一個介面中,哪個老師或學生抽菸,直接去實現該介面即可