分享内部类的整理和测试代码

发表于:2008-07-21来源:作者:点击数: 标签:代码部类分享
Java code package test.jdk; /** * 内部类的收集与整理 * * @author 赵学庆 www. java 2000.net */ public class InnerTest { private String instAtt = "实例变量"; private static String staticAtt = "静态变量"; public void test() { int methodAtt =
Java code package test.jdk;

/**
* 内部类的收集与整理
*
* @author 赵学庆 www.java2000.net
*/
public class InnerTest {
private String instAtt = "实例变量";

private static String staticAtt = "静态变量";

public void test() {
int methodAtt = 1;
final int methodFinalAtt = 2;
// 非静态方法里的内部类
class staticMethodInnerClass {
@Override
public String toString() {
// 非静态方法里无法访问实例的外部变量
System.out.println("非静态方法的内部类可以访问外部类的实例变量:" + instAtt);
System.out.println("非静态方法的内部类可以访问外部类的静态变量:" + staticAtt);
// 非静态方法里无法访问方法的非final的变量
// System.out.println(methodAtt);
System.out.println("非静态方法的内部类可以访问方法的final变量:" + methodFinalAtt);
return "my nickname is white";
}
}
new staticMethodInnerClass().toString();
new Object() {
@Override
public String toString() {
System.out.println("非静态方法的匿名内部类可以访问外部类的实例变量:" + instAtt);
System.out.println("非静态方法的匿名内部类可以访问外部类的静态变量:" + staticAtt);
// 静态方法里匿名内部类无法访问方法的非final的变量
// System.out.println(methodAtt);
System.out.println("非静态方法的匿名内部类可以访问方法的final变量:" + methodFinalAtt);
return "我是匿名内部类";
}
}.toString();
}

public static void main(String blackbat[]) {
int methodAtt = 1;
final int methodFinalAtt = 2;
// 静态方法里的内部类
class staticMethodInnerClass {
@Override
public String toString() {
// 静态方法里无法访问实例的外部变量
// System.out.println(instAtt);
System.out.println("静态方法的内部类可以访问外部类的静态变量:" + staticAtt);
// 静态方法里无法访问方法的非final的变量
// System.out.println(methodAtt);
System.out.println("静态方法的内部类可以访问方法的final变量:" + methodFinalAtt);
return "my nickname is white";
}
}
new staticMethodInnerClass().toString();
new Object() {
@Override
public String toString() {
// 静态方法的匿名内部类不能访问外部类的非静态变量
// System.out.println("非静态方法的匿名内部类可以访问外部类的非静态变量:" + instAtt);
System.out.println("非静态方法的匿名内部类可以访问外部类的静态变量:" + staticAtt);
// 静态方法里匿名内部类无法访问方法的非final的变量
// System.out.println(methodAtt);
System.out.println("非静态方法的匿名内部类可以访问方法的final变量:" + methodFinalAtt);
return "我是匿名内部类";
}
}.toString();
new InnerTest().test();
// 建立静态内部类(static Inner Class)的对象
ImOutClass.StaticInnerClass staticIC = new ImOutClass.StaticInnerClass();
staticIC.aclearcase/" target="_blank" >ccess();
/*
* 建立非静态内部类(non-static Inner Class)的对象. <br>注意这种建立对象的格式 首先创建外部类的对象 然后使用对象.new 来创建。
*/
ImOutClass outC = new ImOutClass();
ImOutClass.InstInnerClass inC = outC.new InstInnerClass();
inC.access();
}
}

原文转自:http://www.ltesting.net