創建內部類的對象可用 .this和.new來創建。 具體看代碼
package xunlong;
class pri{
class inner{
int k=0;
public pri outer(){
return pri.this;
}
}
public inner print(){
return new inner();
}
}
public class Root{
public static void main(String[] args){
pri a=new pri();
pri.inner b=a.new inner();
pri.inner k = a.print();
System.out.println(b==k);
k.k=5;
System.out.println(b.k);
System.out.println(k.k);
pri c;
c=b.outer();
System.out.println(a==c);
}
}
在這段代碼中,我用pri的一個實例創建了一個inner類的對象b。由於非靜態內部類必須依附在外部類的實例上,所以在代碼的末尾證實通過.this返回的外部類的對象c與外部類的實例對象a是同一個對象。
在這段代碼中,我還在外部pri中創建了一個方法print,這個方法返回內部類的對象,且這個內部類的對象是一個全新的對象,在代碼中證實通過print方法創建的innner對象k與通過a對象創建的對象b並不是同一個對象。
如果將這段代碼中的inner類設置為private,那么這段代碼將會出錯,因為我們無法再通過外部類pri來訪問內部了inner。
