1. 程式人生 > >java學習之路————第十二天

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類

額外的抽菸功能,不是所有的老師或同學都抽,不具體共性。

此時可以將該功能封裝在一個介面中,哪個老師或學生抽菸,直接去實現該介面即可