package InnerClass; /* *æ³è¦å建å é¨ç±»ï¼å¿ é¡»å è·å¾å¤é¨ç±»çå¼ç¨ ï¼åµå¥ç±»ï¼éæå é¨ç±»ï¼é¤å¤ï¼ *çæå¤é¨ç±»çå¼ç¨ï¼.this .new *éæå é¨ç±»ä¸éè¦è·å¾å¯¹å¤é¨ç±»çå¼ç¨ * */ public class DotThis { public void f(){ System.out.println("DotThis.f()"); } private class Inner{ public DotThis outer(){ //è·å¾å¤é¨ç±»çå¼ç¨ï¼ç´æ¥è¿åthisï¼æ¯Inner return DotThis.this; } } public class Inner2{ private int a=1; public int b=2; } public Inner inner(){ return new Inner(); } public void testUseThis(DotThis dotThis) { //妿å¨å¤å´ç±»ä»¥å¤çå°æ¹å建å é¨ç±»ï¼å¿ é¡»è¿æ · DotThis.Inner inner= dotThis.inner(); inner.outer().f(); } public void testUseNew(DotThis dotThis){ //.new è·å¾å¤é¨ç±»çå¼ç¨ DotThis.Inner2 inner2=dotThis.new Inner2(); } //éæå é¨ç±»ä¸éè¦è·å¾å¯¹å¤é¨ç±»çå¼ç¨ public static class InnerClass3{ private int a=0; private void a(){ System.out.println("InnerClass3.a()"); } } //å¤å±åµå¥ç±»ä½¿ç¨ //类被åµå¥å¤å°å±å¹¶ä¸éè¦ï¼ä»è½éæè®¿é®ææå¤å´ç±»ä¿¡æ¯ private class A{ void a(){System.out.println("A.a()");} private class AA{ void aa(){System.out.println("AA.aa()");} private class AAA{ void aaa(){System.out.println("AAA.aaa()");} } } } //ç¨åµå¥å é¨ç±»æ¥æµè¯æ¯ä¸ªç±» public static class TestDotThis{ public static void main(String[] args) { DotThis dotThis=new DotThis(); dotThis.testUseThis(dotThis); dotThis.testUseNew(dotThis); InnerClass3 innerClass3=new InnerClass3(); innerClass3.a(); //访é®privateåé System.out.println(innerClass3.a); //ä»å¤å±åµå¥ç±»ä¸è®¿é®å¤å´ç±» A a=dotThis.new A(); a.a(); DotThis.A.AA aa=a.new AA(); aa.aa(); DotThis.A.AA.AAA aaa=aa.new AAA(); aaa.aaa(); } } }