java入門->基礎知識5 繼承,常量,抽象,接口,多態,內部類

一.繼承 :

  1.方法的重寫

    1.1)發生在父子類中,方法名稱相同,參數列表相同,方法體不同;

    1.2)重寫方法調用時,看對象的類型;

    1.3)作用:避免代碼的重複,有利於代碼的重用;

    1.4)通過entends實現繼承;

    1.5)父類:所有子類所共有的屬性和行爲;   子類:子類所特有的屬性和行爲;

    1.6)子類繼承父類後,  子類具有=子類+父類;

    1.7)一個父類可以有多個子類,一個子類只能有一個父類——》單一繼承;

    1.8)繼承具有傳遞性;

    1.9)java規定構造子類之前必須先構造父類。  子類構造中若自己不調用父類構造,則默認爲super()調用父類的無參構造,若              自己寫了,則不在默認提供,super()調父類構造必須位於子類構造第一句;

  2    super():指代當前對象的父類對象

      super().成員名——訪問父類的成員變量

      super().方法名——調用父類的方法

      super(). ——調用父類的構造方法

 3 向上造型

     3.1)父類型的引用指向子類的對象;

     3.2)能點出來什麼,看引用的類型;

     3.3)造型成的類:父類,接口;

 4.重寫與重載的區別

    4.1)重寫:父子類中,方法名相同,參數列表相同,方法體不同; 遵循運行期綁定,根據對象的類型;

    4.2)重載:同一個類中,方法名相同,參數列表不同; 遵循編譯期綁定,根據參數引用的類型;

 5.重寫遵循兩同兩小一大原則、

    5.1)兩同:方法名稱相同,

                       參數列表相同

    5.2)兩小:子類的返回值類型小於或等於父類;

                        返回值類型爲void時,必須相等;

                        返回值類型爲基礎類型時,必須相等;

                        返回值類型爲引用類型時,可以小於或等於;

    5.3)一大:子類的訪問權限大於或者等於父類;

二:package:

    1) 避免類的命名衝突;

    2)包名可以有層次結構;

    3)建議:包名所有字母都小寫;

    4)完全限定名,包名,類名; 

三:import:

    1)同包中的類可以互相訪問;

         不同包中的類想訪問:

          1)import先申明引入類後再使用;

          2)完全限定名——不建議

          3)語法:import 包名.類名

四:訪問控制修飾符

    1)public:公共的,任何類;

    2)protected:受保護的,本類,子類,同包類;

    3)默認的:什麼也不寫,本類,同包類;

    4)private:私有的,本類;

五:static:靜態的

    1)靜態變量

         1.1)由static修飾;

         1.2)屬於類,存在公共區中,只有一份;

         1.3)常常通過類名. 訪問;

         1.4)何時用:當所有對象數據都一樣時使用;

    2)靜態方法

         2.1)由static修飾;

         2.2)屬於類,存在方法區中只有一份;

         2.3)常常通過類名. 訪問;

         2.4)靜態方法沒有隱式的this傳遞,所以靜態方法中不能直接訪問實例成員;

         2.5)何時用:方法的操作僅與參數相關而與對象無關的時候;

    3)靜態塊

         3.1) 由static修飾;

         3.2)在類被加載時自動執行,因此只被加載一次,所以靜態塊也只執行一次;

         3.3)何時用:常常用於加載靜態資源(圖片,音頻,視頻等)

六:final

    1)修飾變量,變量不可被改變;

    2)修飾方法,方法不可被重寫;

    3)修飾類,類不可被繼承;

    final修飾成員變量,兩種初始化方式:

          1)聲明時初始化;

          2)構造方法中初始化;

    final修飾局部變量

           1)使用之前初始化即可;    

七:常量

    7.1)由static final修飾,必須聲明時同時初始化;

    7.2)不能改變,通過類名來訪問;

    7.3)建議:常量名所有字母大寫(多個單詞用下劃線_分割);

    7.4)編譯器在編譯時被直接替換爲具體的數,所以效率高;

八:抽象方法

    8.1)由abstract修飾;

    8.2)只有方法的定義,沒有方法的實現 {}都沒有;

九:抽象類

    9.1)由abstract修飾;

    9.2)包含抽象方法的類必須是抽象類,不包含抽象方法的類也可以聲明爲抽象類;

    9.3)抽象類不能被實例化;

    9.4)抽象類是要被繼承的;

        子類:9.4.1)重寫父類的所有抽象方法;

                   9.4.2)也可申明爲抽象類——一般不這麼用;

    9.5)抽象類的意義:

          父類的意義;9.5.1)封裝子類公有的屬性和行爲,被子類公用;

                                9.5.2)爲所有子類提供一種統一的類型——>向上造型;

           可以包含抽象方法,爲所有子類提供了一個統一的入口,每個子類具體的實現不同;

十:接口 :引用數據類型

    10.1)是一個標準規範,由interface定義;

    10.2)接口中只能包含常量(默認)和抽象方法(默認);

    10.3)接口不能被實例化;

    10.4)接口是要被實現的,實現類;必須重寫接口中的所有方法;

    10.5)一個類可以實現多個接口,又繼承又實現,必須先繼承後實現;

    10.6)接口可以繼承接口;

十一:多態:多種形態

    11.1)多態的意義:

        11.1.1)同一類型的引用指向不同的對象時,有不同的實現; eg:行爲的多態:cut();run();

        11.1.2)同一個對象被造型爲不同的類型時,有不同的功能;eg:對象的多態:水,冰;

    11.2)向上造型:

        11.2.1)父類型的引用指向子類的對象;

        11.2.2)能造型成的類型爲:父類實現的接口;

        11.2.3)能點出來什麼,看引用的類型;

    11.3)強制類型的轉換:成功條件

        11.3.1)引用所指向的對象,就是該類型;

        11.3.2)應用所指向的對象,實現了該接口;

    11.4)若違背如上兩個條件,則發生類型轉換異常

        11.4.1)建議強轉之前通過 instanceof來判斷是否是該類型,instanceof爲true的條件就是強轉成功的條件;

十二:成員內部類

    12.1)類中套類,裏面的叫內部類,外面的叫外部類;

    12.2)內部類通常只服務與外部類,對外不具備可見性;

    12.3)內部類對象通常只在外部類創建;

    12.4)內部類中可以直接訪問外部內成員(包括私有的),內部類中有個隱式的引用指向創建它的外部類對象,

               外部類名.class 成員變量;

十三:匿名內部類

    13.1)想創建一個類的對象,對象創建後,類的意義就不存在了,此時該類不必命名,稱之爲匿名內部類;

    13.2)匿名內部類若想訪問外部的變量,變量必須是final的;

 

總結:面向對象的三大特點

    1)封裝

       1.1)類:封裝的對象的屬性和行爲;

       1.2)方法:封裝的功能的具體實現;

       1.3)訪問修飾符:封裝的是訪問的權限;

   2) 繼承

       2.1)減少代碼的重複,有利於代碼的重用;

       2.2)父類:所有子類所共有的,子類:子類所特有的;

       2.3)一旦子類繼承了父類,子類具有:父+子;

    3)多態

       3.1)意義:行爲的多態,對象的多態;

       3.2)向上造型:強制類型裝換 instanceof;

       3.3)多態後,代碼擴展性,維護性好;

       3.4)多態的表現形式:重寫和重載;

 

        

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章