java三大特性


封裝:將不需要對外提供的內容都隱藏起來,把屬性隱藏,提供公共方法對其訪問,提高代碼安全性與復用性,使用private修飾類的屬性,提供getter/setter方法供外部訪問類的屬性

  

繼承:extends,多個類有共同的成員變量和成員方法,抽取導另外一個類中(父類),在讓多個類去繼承這個父類,我們的多個類就可以獲取到父類中的非私有成員變量與重寫非私有成員方法

   特點:支持單一繼承與多級繼承,不支持多繼承

   繼承中成員變量的特點:子類只能獲取非私有屬性

              子父類中成員變量名字不一樣,直接獲取父類的成員變量

              子父類中成員變量名字一樣,直接獲取子類的成員變量

              super獲取父類的成員變量與成員方法,與this用法相似

   繼承中的構造方法執行順序:創建子類的對象,調用子類的構造方法,如果子類的第一行代碼沒有調用父類的構造方法,則會默認調用父類的無參構造,我們可以使用super(參數)來調用父類的其他的構造方法

   this與super的區別:

    this:當前對象的引用

        調用子類的成員變量和成員方法

        在子類的構造方法第一行調用子類其他構造方法,放到其他會報錯 

    super:子類對象的父類引用

         調用父類的成員變量和成員方法

         在子類的第一行調用父類的構造方法,放到其他行會報錯

    繼承的優點:提高代碼的復用與可維護性

    繼承的缺點:類的耦合性增強了

          開發的原則:高內聚低耦合

          內聚:就是自己彎沉給某件事情的能力

          耦合:類與類的關系

  抽象類:

    abstract關鍵字,用於修飾方法和類,抽象類里面可以有非抽象方法,不能與final,private共用

    抽象方法:不同跟類的方法是相似,單是具體內容又不太一樣,所有我們只能抽取他的聲明,沒有具體的方法體,沒有具體方法體的方法就是抽象方法。

    注意:一個類繼承了抽象類,一定要重寫他所有的抽象方法,否則這個類就得是抽象類

    特點:抽象方法只能在抽象類里面

       抽象類和抽象方法必須被abstract修飾

       抽象類不能實例化對象

       抽象類中可以有非抽象方法

       抽象類和類的關系也是繼承

       一個類繼承了抽象類,要么重寫所有的抽象方法,要么他自己也是抽象類

    成員特點:可以有成員變量

         可以有常量

         可以有抽象方法

         可以有非抽象方法

         可以有構造方法

  接口:interface,接口是一個比抽象類還抽象的類,接口里所有的方法全是抽象方法,用於解決繼承單一的局限性

  格式: interface 接口名{  }

  注意:接口不能實例化

  成員特點:只有抽象方法

       只能有常量

       默認並只能使用public或者abstract修飾方法

       默認使用public static final來修飾成員變量

  一個類實現一個接口,implements關鍵字,要么重寫所有抽象方法,要么是抽象類

  接口特點:接口之間可以多繼承,多層繼承,不能實現

  優點:對外提供規則,江第程序的耦合性

  

  接口和抽象類的區別

    共性:不斷抽取,抽取出抽象的概念

    區別1:與類的關系

        類與接口是實現關系,而且是多實現,一個類可以實現多個接口

        類與抽象類是繼承關系,Java中繼承是單一繼承,一個類只能有一個父類,java的繼承是多繼承

    區別2:成員

        抽象類可以有成員變量,也可以有常量

        接口只能有常量

        抽象類可以有抽象方法,可以有非抽象方法

        接口只能由抽象方法,而方法由默認修飾符public或者abstract

        抽象類有構造方法,接口沒有構造方法

多態:

  多態的前提:
    字符類的繼承關系
    方法的重寫
    父類調用指向子類對象 Animal a = new Cat();

    動態綁定:在運行期間,運行期間調用的方法,是根據其具體的類型

  多態的成員特點
    成員變量:編譯時看的是左邊(父類),運行時也是看左邊(父類)
    成員方法:編譯時看的是左邊(父類),運行時是看右邊(子類)
    靜態方法:編譯的看的是左邊(父類),運行時看的時左邊(父類)
    使用變量去調用靜態方法,其實相當於用變量類型的類名去調用

  多態的向上轉型和向下轉型:
    引用類型之間的轉換
      向上轉型
        由小到大(子類型轉換成父類型)
        Animal a = new Dog();
        只能調用父類有的方法,不能調用子類特有的方法
      向下轉型,本身是什么類型,才能轉那種類型,不能亂轉
        由大到小
        Dog d = (Dog)a;
    基本數據之間的轉換
      自動類型轉換:由小到大 byte short char int long float double
      強制類型 轉換:由大到小

  多態的缺點:
    無法直接訪問子類特有的成員
  多態的優點:
    可以提高可維護性(多態前提所保證),提高代碼的可擴展性,傳遞參數的時候可以直接傳動父類引用。

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM