1. 程式人生 > 其它 >javaSE之面向物件與內部類

javaSE之面向物件與內部類

繼承與實現

繼承:有權使用父類成員,可以不重寫直接用。

實現:實現一個介面,擁有介面功能,但需實現類自己重寫,側重重寫。

 

介面

  1. 語法: 1.7及之前

    1. 公共靜態常量:public static final 其中這些可任意省略,預設的。

    2. 公共抽象方法(無方法體):public abstract 可任意省略。

  2. 使用:

    1. 介面不能例項化

    2. 需要通過實現類進行實現 implements

    3. 使用:通過具體的實現類物件呼叫

      1. 具體實現類:重寫所有抽象方法+按需新增

      2. 抽象實現類:按需重寫+按需新增。 需要具體的子類繼承,重寫抽象方法

    4. 介面可多實現,類只能單繼承。

    5. 一個類先繼承後實現。

    6. 只能類實現介面,多實現關係。

    7. 介面與介面之間,只能繼承,不能實現,一個介面可以多繼承其他介面

 

內部類(可繼承extends,可實現implements)

  1. 成員內部類

  2. 私有內部類

  3. 靜態內部類

  4. 區域性內部類

  5. 匿名內部類:

    1. 作用:簡化實現類|子類,沒有自己類本身作用的實現類|

    2. 匿名內部類物件 :實現類|子類+建立物件

      1. 匿名物件:只能在當前位置使用一次

      2. 引用指向匿名內部類物件 介面多型:介面引用呼叫的為介面中定義的成員

      3. 匿名內部類物件作為方法的實參

    3. new Smoke(){ //實現類類體|抽象類的子類類體 @Override public void smoking() { System.out.println("邊吸菸邊吐菸圈..."); } }

注意:

  1. 成員內部類中不能定義靜態內容,除了靜態常量。

  2. 成員內部類中可以直接使用外部類的成員,包括私有

  3. 外部類中可以通過成員內部類的物件呼叫成員內部類的成員 ,包括私有

  4. 通過外部類物件去建立成員內部類物件,通過成員內部類物件呼叫成員內部類成員。

 

lambda表示式

  1. 作用:簡化匿名內部類物件

  2. 前提:繼承或介面(介面中只有一個必須被重寫的抽象方法)

  3. 強制檢查是否為函式式介面: @FunctionalInterface

  4. 語法:() ->{}

    1. () 介面中抽象方法的引數列表

    2. -> lambda符號

    3. {} 重寫方法的方法體

    4.