|
内部类: 在类内部定义的类.
第一个程序:
用Test的getWrite()方法访问内部类InnerClass1方法
package test;

 public class Test ...{
 /**//*
*Inner Class
*/
 class InnerClass1 ...{
 public void write() ...{
System.out.println("Hello :" + this.getClass());
}
}
 public void getWrite()...{
InnerClass1 inner1 = new InnerClass1();
inner1.write();
}
 public static void main(String[] arg) ...{
Test test=new Test();
test.getWrite();
}
}

第二个程序:
用Test 方法返回 InnerClass 的实例
package test;

 public class Test2 ...{
 /**//*
* Inner Class
*/
 class InnerClass1 ...{
 public void write() ...{
System.out.println("Hello :" + this.getClass());
}
}

 public InnerClass1 getWrite() ...{

return new InnerClass1(); //返回InnerClass1的实例
}

 public static void main(String[] arg) ...{

Test2 test = new Test2();
Test2.InnerClass1 inner =test.getWrite();
inner.write();

}
}

第三个程序
内部类继承父类
package test;




 public class Test3 ...{
 /**//*
* Inner Class
*/
 class InnerClass1 ...{
 public void write() ...{
System.out.println("Hello :" + this.getClass());
}
}
 class InnerClass2 extends InnerClass1 ...{// 继承InnerClass1
}
 public InnerClass1 getWrite() ...{

return new InnerClass1(); // 返回InnerClass1的实例
}
 public InnerClass2 getWrite2() ...{

return new InnerClass2(); // 返回InnerClass2的实例
}

 public static void main(String[] arg) ...{
Test3 test3=new Test3();
Test3.InnerClass2 inner2=test3.getWrite2();
inner2.write();


}
}


第三个程序
通过.this 生成对外部类的引用
package test;

import test.Test3.InnerClass1;
import test.Test3.InnerClass2;

 public class Test4 ...{
 /**//*
* Inner Class
*/

 class InnerClass1 ...{
 public void write() ...{
System.out.println("Hello :" + this.getClass());
}
 public Test4 getOuter()...{
return Test4.this; //通过.this 返回Test4的引用
}
}

 public InnerClass1 getInner() ...{

return new InnerClass1(); // 返回InnerClass1的实例
}

 public void write() ...{

System.out.println("Hello :OutClass");
}

 public static void main(String[] arg) ...{
Test4 test=new Test4();
Test4.InnerClass1 inner=test.getInner();
inner.getOuter().write();
}
}

第五个程序
.new 直接创建内部类的实例
package test;

import test.Test3.InnerClass1;
import test.Test3.InnerClass2;

 public class Test5 ...{
 /**//*
* Inner Class
*/

 class InnerClass1 ...{
 public void write() ...{
System.out.println("Hello :" + this.getClass());
}
}
 public static void main(String[] arg) ...{
Test5 test=new Test5();
Test5.InnerClass1 inner=test.new InnerClass1(); //直接创建内部类的对象
inner.write();
}
}

~~~~Kyle
|