Java内部类实例测试及总结

这里没有讲解理论是怎么样的,我用实例说明,个人觉得比理论更来得实际,并写下了测试的总结。

如需要补充理论的请参看这篇文章:关于JAVA匿名内部类,回调,事件模式的一点讨论[url]http://wjheye.iteye.com/blog/1037407[/url]

/**

* 内部类测试

* @author http://blog.csdn.net/fenglibing

* 总结:

* 1、可以通过外部类的方法调用成员内部类、静态内部类

* 2、内部成员类可以调用内部静态类,但内部静态不能够调用内总成员类

* 3、内部成员类可以调用外部类的静态方法与非静态方法

* 4、静态内部类不能够调用外部类的非静态方法、变量

* 5、外部类的静态方法里可以调用内总成员类,不过调用方法不是"T1 t1=new T1();",而是:

* T1 t1=new InnerTest().new T1();

* 6、外部类的静态方法可以直接调用内部静态类

* 7、内部静态类与外部类的静态方法与间是畅通无阻,内部成员类与外部类所有方法与变量都可以交互(除

* 外部静态方法不能够直接调用内部成员类)

*/

public class InnerTest {

static int a;

InnerTest()

{

new T1();//在外部类的构造函数里,调用内部成类

new T2();

}

/**

* 内部成员类

*/

private class T1{

T2 t2=new T2();//建立一个内部类,内部类调用内部类

T1()

{

a++;//内部成员类可以直接调用外总类的静态变量

//内部成员类可以调用外部类的静态方法与非静态方法

System.out.println(addLong(1,2));

System.out.println(add(1,2));

}

}

/**

* 内部静态类

*/

static class T2{

//内部静态类不能够直接调用内部成员类

//T1 t1=new T1();

T2()

{

System.out.println(add(1,2));

//静态内部类不能够调用外部类的非静态方法、变量

//addLong(1,2);

}

}

/*************外部类方法*************/

long addLong(long a,long b)

{

return a+b;

}

public static int add(int a,int b)

{

return a+b;

}

void callT2()

{

new T2();//通过外部类的方法调用内部类

}



public static void main(String[] args) {

// TODO Auto-generated method stub

InnerTest it=new InnerTest();

it.callT2();

//静态方法里面调用内部成员类,不过调用方法不是"T1 t1=new T1();",而是如下:

T1 t1=new InnerTest().new T1();

//静态方法里面调用内部静态类

T2 t2=new T2();

}

/*************外部类方法*************/

}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fenglibing/archive/2007/08/23/1756449.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值