Java
内部类: 在类内部定义的类.第一个程序:
用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();
}
}
上一页
页:
[1]