天天看點

Java-17 面向對象 多态

1.多态概論:某一個事物,在不同時刻表現出來的不同狀态,要想有多态,就必須要有繼承,繼承是多态的前提

  舉例:

    貓可以是貓的類型。貓 m = new 貓(); 

    貓也是動物的一種,也可以把貓稱為動物。 動物 d = new 貓();

2.多态的前提:

  1.   要有繼承的關系

  2、要有方法的重寫,如果沒有重寫也是可以的,但是你不重寫就沒有意義

  3、要有父類的引用指向子類的對象

    格式:

      父 f = new 子();

3.多态通路成員特點:

  1、成員變量

    編譯看左邊,運作看左邊

  2、構造方法

    建立子類對象的時候,先通路父類的構造方法,先對父類的資料進行初始化

  3、成員方法

    編譯看左邊,運作看右邊

    因為子類的成員方法存在重寫,是以運作通路的時候看右邊

  4、靜态的成員方法:

    靜态的随着類的加載而加載

    由于被static修飾的都是與類有關系的,是以它算不上重寫

    是以,編譯的時候看左邊,運作通路的時候也看左邊

  總結:隻有通路成員方法的時候是編譯看左邊,運作看右邊,其他的是編譯看左邊,運作看左邊

4.多态的好處:

    1.提高了程式的維護性(由繼承保證)

    2.提高了程式的擴充性(由多态保證)

5.多态的弊端:

  1.不能直接通路子類特有功能   解決方法:轉型

  2.不能通過多态去通路父類和子類同名的方法,解決方式:super

6. 多态中的轉型

  1.向上轉型(從子到父 父類引用指向子類對象)

    格式   Fu5 f = new Zi5();

  2.向下轉型

    格式   Zi5 z = (Zi5) f;

注意事項:

7.final關鍵字保留父類特色方法