總結了一下內部類的一下特性和容易出錯的地方
有什麼錯誤
(一)
Java
嵌套類可以體現邏輯上的從屬關系
外部類的成員變量作用域是整個外部類
public class Outer {
private int size;
public class Inner{
private int counter =
public void doStuff(){ size++; }
}
public static void main(String args[]){
Inner inner= new Inner();
inner
System
System
System
}
}
(二)下面演示了如何在外部類之外實例出一個public Inner類對象
類名前加上外部類類名
例子
public class Outer {
private int size;
public class Inner{
public void doStuff(){ size++; }
}
}
public class TestInner{
public static void main(String args[]){
Outer outer = new Outer();
Outer
inner
}
}
(三)當內部類與外部類有同名變量時
例子
private int size;
public class Inner{
private size;
public void doStuff(int size){
size++; this
Outer
}
}
public static void main(String args[]){
this
}
}
(四)在方法中定義一個嵌套類
因為方法的局部變量只存在與方法作用期間
public class Outer {
private int size =
public Object makeTheInner(int localvalue){
final int finalvalue =
class Inner{
public String toString(){return (
}
return new Inner();
}
public static void main(String args[]){
Outer outer = new Outer();
Object obj = outer
System
}
}
(五)
嵌套類的類名必須與包裝它的外部類區別
定義在方法中的嵌套類只能使用定義為final的局部變量
嵌套類可以使用的變量種類包括
嵌套類同樣具有所有的訪問控制權限
嵌套類可以是abstract類
嵌套類可以是接口
定義為static的內部類將成為頂級類(top
非static內部類不能定義static成員
當外部類編譯時
OuterClass$InnerClass
例子
class Outer {
private int size =
static class Inner{
int value=
public void doStuff(){ size+=value; }// 錯誤
}
}
public class TestInner{
public static void main(String args[]){
Outer outer = new Outer();
Inner inner = new Inner();// 這種實例也不對
應該 Out
}
}
在總結的第(五)裡面
非static內部類不能定義static成員
(
(
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26203.html