Java面向對象學習筆記 -- 3(繼承、向上造型、重寫)

 

1. 繼承java

    1)extends關鍵字 ,使用繼承能夠實現代碼的重用,在java語言中,須要經過extends關鍵字實現類的繼承。繼承完成後,子類(Sub class)能夠繼承父類(Super class)的成員變量及成員方法,同時子類也能夠定義本身的成員變量和成員方法。屆時,子類將具備父類的成員及本類的成員。 須要注意的是,Java語言不支持多重繼承,即:一個類只能繼承一個父類,但一個父類能夠有多個子類。dom

    2)使用繼承的好處:ide

        ① 繼承是在一些比較通常的類的基礎上構造、創建和擴充新類的最有效的手段。spa

        ② 繼承簡化了人們對事物的認識和描述,能清晰體現相關類間的層次結構關係。orm

        ③ 繼承提供了軟件複用功能,減少代碼和數據的冗餘度,大大增長程序的重用性。對象

        ④ 繼承經過加強一致性來減小模塊間的接口和界面,大大增長了程序的易維護性繼承

    3)繼承中構造器的調用順序接口

        ① 子類構造器裏面必定會調用父類構造器,默認調用父類的無參構造器遊戲

        ② 子類父類都不寫構造器,一樣會存在調用關係。開發

        ③ 調用父類構造器只能寫在子類構造器第一行,不寫時候,也默認是第一行。

        ④ 當在子類構造器指定調用了父類的有參構造器,則不會再去執行默認的調用無參構造器

    4)super的用法

        ① super():用來調用父類無參構造器,必定在子類構造器第一行使用,能夠不寫的。

        ② super.屬性,訪問父類對象的屬性

        ③ super.方法,調用父類的方法


2. 向上造型

    一個子類的對象能夠向上造型爲父類的類型。即,定義父類型的引用能夠指向子類的對象,可是經過父類的引用只能訪問父類所定義的成員,而不能訪問子類所擴展的部分。

    父類型   變量   =   new  子類();

    向上造型是多態的一種體現,同時可使程序更簡單明瞭。

    屬性綁定到變量的類型,由變量類型決定訪問哪一個屬性;

    方法動態綁定到對象,由對象的類型決定訪問哪一個方法。

    強轉:

    父類型   變量1   =   new  子類();

    子類型 變量2 = (子類型) 變量1;

    強轉對方法動態綁定到對象無影響,由於強轉的是父類的引用,而實例是沒變的,只是把實例看成另外一個狀態去看而已。可是強轉對屬性動態綁定到變量類型有影響。


    /**

      * 在俄羅斯方塊遊戲中,每次下落的方塊是隨機生成的,可是不能保證下次生成什麼類型的方塊,

      * 因此,在獲取方塊時候,須要使用父類型做爲方法的返回值類型。

      */

            public static Tetromino getOntTetronino(){

                int num = (int)(Math.random() * 7);

                switch( num ){

                    case 0 :  return new T();  break;

                    case 1 :  return new O(); break;

                    case 2 :  return new L(); break;

                    ... ...

                }

            }

            // 而後接收

            public static void main(String[] args){

                Tetromino tetro = getOntTetronino();

            }



3. 方法的重寫

    重寫(override):發生在兩個類中,而且是子父類的關係,子類方法與父類方法簽名相同,方法體不一樣。

    注意:

        1)重寫方法被調用時,看對象

        2)兩同兩小一大原則

            2.1)兩同:方法名同,參數列表同

            2.2)兩小:子類返回值類型小於等於父類的

                2.2.1)返回值使用void和基本類型,必須相同

                2.2.2)返回值是引用類型時,能夠子類小於等於父類

            2.3)一大:子類訪問權限大於等於父類

    重寫的好處:

        重寫是對父類的功能的擴展,可用擁有父類的功能,還能夠實現本身的功能,在實際開發過程當中使用方便,同時也是代碼結構清晰。

    重寫和重載的區別:

        1)重寫是發生在2個各種裏面,且是字符類關係的2個類,重載是發生在一個類裏的

        2)衝寫遵循的原則是運行期綁定,重載則是編譯期綁定

        3)重寫必須方法名相同,參數列表相同;重載是方法名相同,參數列表必須不一樣。

相關文章
相關標籤/搜索