JAVA SE Review (3) - 類 & 繼承 & 接口

Part 4 : 類、繼承、接口

    • 基本結構:

              class Person{
                  private static int[] password;//字段
                  public String name;
                  void Hello(){//方法
                      System.out.println("Hello!");
                  }
              }
    • 構造方法 :

      • 與類名同名,不寫返回類型
      • 如無定義,將生成默認構造方法(操作爲空)
      • 可重載實現多態
      • 可以在一個構造方法中調用另一構造方法,但是需要放在第一句
      • 訪問字段 : 實體.字段(類外部) / this.字段 (類方法中)
    • 善用setter與getter


  1. 繼承
    • 關鍵字 : extends
    • 本質 : E-R關係圖中的is-a關係(說明此子類繼承父類所有方法,字段)
    • 可通過對變量重定義進行“隱藏”,也可添加新變量,訪問隱藏字段 -> super.
    • 可對同名方法重定義,實現覆蓋(以子類爲準),建議加標記@OverRide,訪問覆蓋方法 -> super.
    • 子類可進行強制類型轉換變爲父類



    • 本質 : 解決namespace與命名衝突問題,同一包各個類默認可以互相訪問
    • 引入關鍵詞 : import


  2. 訪問權限

    • 分爲兩類:訪問修飾符,其他修飾符
    • 訪問修飾符:

      同一個類中 同一個包中 不同包的子類中 不同包中的非子類
      private Yes
      默認 Yes Yes
      protected Yes Yes Yes
      public Yes Yes Yes Yes

      (此修飾適用於類/類中成員)

    • 非訪問控制符

      基本含義 修飾類 修飾成員 修飾局部變量
      Static 靜態,預分配 可以修飾子類 Yes
      Final 最終的,不可改變 Yes Yes Yes
      abstract 抽象的,不可實例化 Yes Yes
      • static
        • 類變量可通過類名訪問或實例對象訪問,結果相同(本質:屬於這個類)
          如: System.in / System.out
        • 一定程度上,可以作爲全局變量表示方式
        • 推薦使用類名調用,static方法中不可使用 super / this
      • final
        • 類修飾結果:不可被繼承——不會有子類
        • 字段/變量修飾結果:只可賦值一次,不可被修改——只讀量
        • static final 可用於表示常量
      • abstract
        • 類修飾結果:不可被實例化
        • 方法修飾:只需聲明,且若類包含abstract方法,則類爲abstract類(子類亦同,直至實現)


  3. 接口(interface)

    • 抽象:用來描述一個對象的行爲特徵
    • 本質:使不相關類,可以有同樣的方法(接口只負責描述)
    • 例子:toString()
    • 意義:實現了多重繼承

      實際上,接口可以作爲一種特殊的類,在泛型操作(<list>)中,可以將接口作爲一種類型,這就使得使用該接口的變量可以向上轉型(又稱向上轉換),這就實現了另一種意義上的“繼承”
      (詳參 Java SE Review(4) - Java內部機制 (2) : 向上轉換與向下轉換)

    • 定義結構:

      [public] interface Name[extends SuperInterface]{
      [returnType] methodName([paralist]);//方法
      Elemtype elem = value;//常量
      }
    • 接口中的方法(Method):

      • 接口中的方法具有abstractpublic屬性
      • 可以對父接口方法隱藏,進行重載
      • 引用接口的類必須實現引用接口的所有聲明的方法
        例:

        class FIFOQuene implements Name{
        ...
        public methodName([paralist]){
        ...
        }
        ...
        }
      • 接口對象可以作爲引用,將其他實現接口的實例的對象存儲在其中,通過這些變量可以訪問類實現的接口中的方法,JAVA運行時系統動態確定使用哪個類中的方法
        例:

        public static void main(String args[]){
        ...
        Name temp = new FIFOQuene();
        ...
        temp.methondname([objlist]);
        ...
        }

      • Java8以上,可以對接口中定義的方法在接口中實現,稱爲默認方法(關鍵詞default),即:提供默認實現

      • 接口中的常量:
        • 接口中不可以存在字段,但可以存在常量,常量被所有引用此接口的類共享,類似於C/C++中的 const#define
        • 常量具有public,static,final屬性

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