巢狀類:
1. 可以擴充套件其他類,包括包圍的類,也可以實現任何介面,也可以被擴充套件
2. 可以被宣告成final和abstract,可使用註解
3. 是其包圍型別的成員
a. 非靜態巢狀類,即內部類
a. 分類:
1. 在乙個類(外部類)中直接定義的內部類;
2. 在乙個方法(外部類的方法)中定義的內部類;
3. 匿名內部類
b. 性質
不能定義靜態屬性和靜態方法
可以訪問外部類的所有例項屬性,靜態屬性
a1.內部成員類
內部類只在外部類的作用域內是可知的,如果外部類外的任何**嘗試初始化內部類i或使用它,編譯就不會通過。同時,內部類的變數成員只在內部內內部可見,若外部類或同層次的內部類需要訪問,需通過內部物件訪問,不可直接訪問內部類的變數
public、default修飾的內部類,通過new 外部類().new inner(),建立物件
內部成員類持有乙個外部物件的引用,內部類的例項可以對外部類的例項屬性進行修改。
當呼叫內部類的構造器的時候,會把當前建立的內部類物件例項中持有的外部物件引用賦值為當前建立內部類的外部類例項
a2. 方法中定義內部類
1. 在方法中定義的內部類的可見性更小,只在方法內部可見,在外部類中不可見
2. 方法中的內部類可直接訪問外部類的變數,且只能訪問本方法的final成員。若在方法內部定義成員,只允許final
修飾或不加修飾符,其他像static、public等均不可用。
3. 不能有訪問修飾符
b. 靜態巢狀類
1. 可直接訪問外部類的靜態變數和方法,不能直接訪問外部類的非靜態成員
2. 外部類可以通過內部類物件,訪問內部類的變數(私有和公有變數),不能直接訪問
3. 對於public修飾的靜態巢狀類,用 new 外部類.內部類()的方式建立 new outer.publicnestedclass();
預設的靜態巢狀類,可以在同一包名下,用 new 外部類.內部類()的方式建立
詳細內容,見前兩篇
類的巢狀 java
題目 設計雇員employee類,記錄雇員的情況,包括姓名 年薪 受僱時間,要求定義mydate類作為受僱時間,其中包括工作的年 月 日,並用相應的方法對employee類的成員變數進行設定。編寫測試類test測試employee類。要求使用自己的包。package report1 class my...
JAVA 巢狀類學習
巢狀類意思是靜態的內部類,與c 不同,巢狀內部類可以訪問外圍類的屬性和方法。1 普通內部類不能建立 static 的屬性和方法,因為外部無法直接訪問內部類,只能通過外部類。2 巢狀類可以建立 static 的屬性和方法,並且因為巢狀類是static的,這樣可以通過外部類加上點來訪問內部類,而且可以直...
java中的巢狀類
幾種內部類的共性 四種不同型別的巢狀類 date 2017年3月16日 author sung lee public class outerofinnerclass 靜態巢狀類 static nested class public static class inner3 public void me...