/**
* 常規內部類:常規內部類沒有用static修飾且定義在在外部類類體中。
* 1.常規內部類中的方法可以直接使用外部類的例項變數和例項方法。
* 2.在常規內部類中可以直接用內部類建立物件
*/public class myouter }
public void outermethod()
public void makeinner()
public static void main(string args)
}/**
* 靜態內部類:與類的其他成員相似,可以用static修飾內部類,
* 這樣的類稱為靜態內部類。靜態內部類與靜態內部方法相似,
* 只能訪問外部類的static成員,
* 不能直接訪問外部類的例項變數,與例項方法,只有通過物件引用才能訪問。
*/public class myouter2 }
public static void main(string args)
}/**
* 區域性內部類:在方法體或語句塊(包括方法、構造方法、區域性塊或靜態初始化塊)內部定義的類成為區域性內部類。
* 區域性內部類不能加任何訪問修飾符,因為它只對區域性塊有效。
* 1.區域性內部類只在方法體中有效,就想定義的區域性變數一樣,在定義的方法體外不能建立區域性內部類的物件
* 2.在方法內部定義類時,應注意以下問題:
* 1.方法定義區域性內部類同方法定義區域性變數一樣,不能使用private、protected、public等訪問修飾說明符修飾,
* 也不能使用static修飾,但可以使用final和 abstract修飾
* 2.方法中的內部類可以訪問外部類成員。對於方法的引數和區域性變數,必須有final修飾才可以訪問。
* 3.static方法中定義的內部類可以訪問外部類定義的static成員
* */
public class myouter3
} return new myinner(); }
public static void main(string args)
}/*匿名內部類:定義類的最終目的是建立乙個類的例項,但是如果某個類的例項只是用一次,則可以將類的定義與類的建立,放到與一起完成,或者說在定義類的同時就建立乙個類
以這種方法定義的沒有名字的類成為匿名內部類。
宣告和構造匿名內部類的一般格式如下:
new classorinte***cename()
1.匿名內部類可以繼承乙個類或實現乙個介面,這裡的classorinte***cename是匿名內部類所繼承的類名或實現的介面名。但匿名內部類不能同時實現乙個介面和繼承乙個類,
也不能實現多個介面。如果實現了乙個介面,該類是object類的直接子類,匿名類繼承乙個類或實現乙個介面,不需要extends和implements關鍵字。
2.由於匿名內部類沒有名稱,所以類體中不能定義構造方法,由於不知道類名也不能使用關鍵字來建立該類的例項。實際上匿名內部類的定義、構造、和第一次使用都發生在同樣乙個地方。
此外,上式是乙個表示式,返回的是乙個物件的引用,所以可以直接使用或將其複製給乙個物件變數。例:
typename obj=new name()
同樣,也可以將構造的物件作為呼叫的引數。例:
somemethod(new name());*/
public class myouter4
}; }
public static void main(string args)
}
5,內部介面:
為了弄清楚內部介面是如何工作的,我們可以拿它與內部類作比較。內部類可以被認為是乙個外部類內部定義的乙個常規方法。因為乙個方法可以被宣告為靜態和非靜態,類似的內部類也可以被宣告為靜態和非靜態。靜態類類似於靜態方法,它只能訪問外部類的靜態成員屬性。非靜態方法可以訪問外部類的所有成員屬性。
Java四種內部類
參考 四種內部類 常規內部類 靜態內部類 區域性內部類 匿名內部類 1 常規內部類 常規內部類沒有用static修飾且定義在外部類類體中,常規內部類可以理解為類中普通的成員變數 1 常規內部類可以訪問外部類的private成員變數和方法 2 如果要訪問內部類,首先要例項化外部類outer,然後呼叫i...
java四種內部類詳解
一般來說,有4中內部類 常規內部類 靜態內部類 區域性內部類 匿名內部類。一.常規內部類 常規內部類沒有用static修飾且定義在在外部類類體中。1.常規內部類中的方法可以直接使用外部類的例項變數和例項方法。2.在常規內部類中可以直接用內部類建立物件 3.如下 public class myoute...
java四種內部類詳解
一般來說,有4中內部類 常規內部類 靜態內部類 區域性內部類 匿名內部類。一.常規內部類 常規內部類沒有用static修飾且定義在在外部類類體中。1.常規內部類中的方法可以直接使用外部類的例項變數和例項方法。2.在常規內部類中可以直接用內部類建立物件 3.如下 public class myoute...