1. 程式人生 > 資訊 >比亞迪 F5 DM-i 內飾諜照曝光,採用懸浮式液晶儀表和中控屏設計,告別迷你屏

比亞迪 F5 DM-i 內飾諜照曝光,採用懸浮式液晶儀表和中控屏設計,告別迷你屏

內部類

內部類在編譯後也會生成一個class檔案,檔名為:

外部類名$內部類名.class

內部類與外部類的關係只在編譯時有效,編譯結束後內部類和外部類不再有包含關係。

成員內部類:

定義在外部類的成員(屬性、方法)位置

可以使用四種訪問許可權修飾符修飾內部類

可以在內部類的內部定義屬性和方法

\

內部類可以有和外部類重名的屬性和方法,內部類物件優先訪問自己的屬性和方法。

內部類物件訪問外部類物件的屬性和方法,可以使用:

外部類名.this.外部類屬性

外部類名.this.外部類方法(引數)

System.out.println( Outer.this
.a );

成員內部類能不能定義靜態屬性?

成員內部類屬於外部類物件

類的靜態屬性先於物件被建立

內部類靜態屬性被建立時還沒有外部類物件

因此成員內部類不能有靜態屬性或方法。

靜態內部類:

使用static修飾符修飾的成員內部類

建立靜態內部類的物件不需要建立外部類物件

只能訪問外部類靜態的屬性或方法

class Outer {
    private int a = 10;
    private static int b = 20;
    public static class Inner {
        public void print( ) {
            System.out.println(a); 
//編譯出錯 System.out.println(b); } } } //只能訪問靜態屬性

區域性內部類:

方法內部定義的內部類

作用範圍等同於區域性變數

不能在作用範圍以外建立物件

可以訪問外部類的屬性和方法

class Outer {
    private int a = 10;
    public void m1( final int b ) {
        class Inner{
            public void m1( ) {
                System.out.println(a);
                System.out.println(b);
            }
        }
    }
}

區域性內部類、方法的形參和區域性變數在方法結束後都會消失,但是區域性內部類的物件不會消失,所以如果區域性內部類的物件訪問的形參和區域性變數必須使用final修飾符修飾。

JDK1.8取消了此限制。

使用類、抽象類和介面可以建立匿名內部類,匿名內部類相當於在方法中宣告的區域性內部類,只是沒有名字,只知道它的父類或實現的介面的名字。

如果父類或實現的介面中有抽象方法,則匿名內部類必須實現所有的抽象方法。

使用匿名內部類的條件:

特殊的區域性內部類,所有區域性內部類的特徵匿名內部類全有

必須知道它的父類或實現的介面

只建立該類的一個物件

匿名內部類能不能定義構造方法?

匿名內部類不知道類名,所以不能定義構造方法,只能使用預設無參的構造方法。

Lambda表示式

匿名內部類新寫法(JDK8)-Lambda表示式

思考:為什麼使用Lambda表示式

Lambda表示式是一個匿名函式,我們可以把Lambda表示式理解為一段可以傳遞的程式碼(將程式碼像資料一樣傳遞)。使用它可以寫出更簡潔、更靈活的程式碼。作為一種更緊湊的程式碼風格,使Java的語言表達能力得到了提升。

Lambda表示式的使用

1.舉例 如上

2.格式 -> :Lambda表示式操作符 或箭頭操作符 ->左邊 :形參列表(介面中抽象方法的形參列表) ->右邊:Lambda體(重寫抽象方法的方法體)

3.Lambda實質:作為介面的例項

4.Lambda使用如下情況:

例項1: