1. 程式人生 > >內部類------巢狀類、區域性類、匿名類、lambda

內部類------巢狀類、區域性類、匿名類、lambda

巢狀類、區域性類:是帶有名字的,可以多次使用,巢狀類使用相對更為靈活一點,區域性類在函式內內部。匿名類只是使用一次,lambda是匿名類的簡寫。

巢狀類:

是否有名稱空間:是

是否可以生面為static型別:可以宣告為static類,建立方式OuterClass.StaticNestedClass。類的所有變數與型別為static形式,不可以呼叫no-static型別。no-static型別可以呼叫外部類中的所有變數,同理外部類也可以呼叫內部類中的所有變數。具有更好的封裝性。建立方式為outerObject.new InnerClass();

區域性類:在函式內部

類是否有名稱空間:是

類是否可以訪問區域性變數:訪問不可變型別

類是否可以宣告為static:不可以,因為要訪問一些,所以不能為static。如果函式為static函式,則函式不能訪問非static變數。同理不能宣告為介面,因為介面預設為static變數。

匿名類:  形式為:new type(){};要去與local函式一樣;

lambda:是針對類中只含有一個函式的介面或者類

在呼叫的時候,而生成的類。lambda的表達形式為不需要寫明類的型別,編譯器會自動根據需要的型別、返回型別,匹配到合適的型別上面。表示形式為

(p)->{

return   varible

}

是否有自己的名稱空間:無

引用:是針對lambda函式來說的,lambda的函式內部,lambda的函式只有呼叫,沒有其他的。有四種形式。

呼叫格式如下:說明一點lambda的函式必須與引用函式的格式相同(大概)

enum型別:

表示一組常量型別,一般用於SWITCH ,可以包含field  method型別