重溫Java基礎(五)

1.抽象類與接口

1.1.抽象方法,abstract修飾的方法,特點如下,

  • 抽象方法是沒有方法體,abstract Double getArea();
  • 抽象方法必須定義在抽象類中
  • 子類必須去覆蓋該方法,抽象方法不能是private,不能使用final修飾,不能同時使用static修飾

1.2.抽象類

  • 抽象類是不能直接創建對象的(沒有方法體)
  • 抽象類裏面可以有抽象方法和非抽象方法,非抽象方法黑子類調用的
  • 子類沒有去覆蓋抽象方法,把子類也變成抽象類
  • 構造方法不能定義爲私有的(子類要繼承)
  • 抽象類不能使用final去修飾

1.3.抽象類的命名一般在前面加上Abstract,抽象類必須有子類纔有意義

2.接口,是一種規範,使用抽象方法定義一組功能。方法必須被實現。

2.1.接口的命名前面加 I,結尾加上able。接口是特殊的抽象類。class文件,方法前面自動加上public abstract。

  • 接口是沒有構造器的,接口不能被創建的。
  • 接口中定義的變量都是全局的靜態常量。反編譯變量之後可以看到 public static final 
  • 接口中定義的方法都是公共的抽象方法(class文件,方法前面自動加上public abstract)
  • 接口當中可以定義內部類,內部類也是public abstract
  • 類是單繼承,接口可以多繼承

2.3.接口的實現

  • 在實現類當中,必須覆蓋接口中的方法,必須是public的。
  • 接口也是父類,編譯的時候看左邊,運行的時候看右邊。
  • 面向接口編程,多態

2.4.接口和抽象類的區別

  • 相同點
  1. 都是被其它類實現或繼承
  2. 都不能被實例化
  3. 都可以定義抽象方法,定義的抽象方法,子類必須覆蓋
  • 不同點
  1. 接口中沒有構造器,抽象類中有構造器
  2. 抽象類可以有抽象方法和普通方法,接口中只能是抽象方法,不能有普通方法。(帶有方法體的是普通方法)
  3. 接口中的變量默認public static final 靜態常量
  4. 接口中的方法是public abstract 方法名

3.面向接口編程,把實現類的對象賦值給接口類型的變量(多態)

  • 多態的好處,屏蔽了不同類的之間的實現差異,從而達到通用編程

4.內部類,

  • 增強封裝,不允許其他類使用
  • 增加了代碼的維護性
  • 內部類可以直接訪問外部類的成員

4.1內部類的劃分

  • 實例內部類:定義在類中的內部類,沒有任何修飾符
  • 靜態內部類:static修飾的內部類
  • 局部內部類:定義在方法中的內部類
  • 匿名內部類:屬於局部內部類中的一種

4.2.實例內部類,屬於對象的內部類,不屬於類的,不能用static修飾

  • 使用內部類必須創建外部類
  • 內部類可以直接訪問外部類的成員
  • 在內部類中不能有靜態成員,內部類是屬於外部類的成員

4.3.靜態內部類

  • 靜態內部類不需要創建外部對象
  • 在靜態內部類中,是沒有外部類的引用的
  • 靜態內部類可以使用外部類的靜態成員

4.3.局部內部類

  • 不能使用一些修飾符public,只能在方法中使用
  • 局部內部類不能包含靜態變量
  • 使用局部變量的本質是final的

4.4.匿名內部類,沒有名字的局部內部類(安卓用的比較多)

  • new 父類的構造器 或者 接口 (){    }
  • 必須要有父類或者實現了接口

5.枚舉,表示一個事件的固定狀態

  • enum 修飾,枚舉是一個特殊的類
  • 枚舉不能創建對象,構造器私有化
  • 可以和switch配合使用

 

 

 

 

 

 

 

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