創建內部類的對象可用 .this和.new來創建。 具體看代碼 在這段代碼中,我用pri的一個實例創建了一個inner類的對象b。由於非靜態內部類必須依附在外部類的實例上,所以在代碼的末尾證實通過.this返回的外部類的對象c與外部類的實例對象a是同一個對象。 在這段代碼中,我還在外部pri中創建了 ...
創建內部類的對象可用 .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。