黑马程序员技术交流社区
标题:
匿名内部类
[打印本页]
作者:
陈林阳
时间:
2011-10-28 08:46
标题:
匿名内部类
看了毕老师的视频了 对匿名内部类还是不是很了解啊 求助
作者:
李印东老师
时间:
2011-10-28 08:51
多看几遍,毕老师讲得已经很贴近大白话了!认真听。。
作者:
孙运强
时间:
2011-10-28 09:20
我个人理解是当一个方法需要一个实例化对象时而这个对象只需要一次时就可以用匿名内部类,
而不需要用引用指向它,
obj.method(new Student(){..........});
可以理解为
Student s=new Student();
obj.method(s);
我也有一点没有搞明白,匿名内部类中的那个Student是什么?
obj.method(new InterfaceName(){......................});
怎么还可以用接口new呢?
InterfaceName()是构造函数吗?
接口不是不能new吗?
可能我的表达有问题,不知道各位仁兄能否理解!
作者:
o火o把o
时间:
2011-10-28 13:03
匿名内部类就是没有名字的内部类,或者说用不着给起名字的类。
如下情形下建议使用匿名内部类:
·只用到类的一个实例。
·类在定义后马上用到。
·类非常小。
·给类命名并不会导致你的代码更容易被理解。
在使用匿名内部类时,要记住以下几个原则:
·匿名内部类不能有构造方法。
·匿名内部类不能定义任何静态成员、方法和类。
·匿名内部类不能是public,protected,private,static。
·只能创建匿名内部类的一个实例。
·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
作者:
范龙彬
时间:
2011-10-28 13:47
先给你举个小例子
A(new B()
{
public void C(D e){
....
}
});
这是最常用的匿名类了。如果匿名类代码不长,这样写着易读
实际上,匿名类这样去理解:
1.类是定义对象的,匿名类也是;
2.别的类有名字,可以多次声明/创建对象,而匿名类没有名字,只能当时直接创建对象实例;
3.由于2,所以有名类可以独立存在于一个源文件;而匿名类最多也就是做为类成员变量的定义,或方法调用的参数,或局部变量的定义(这个比较少,实际上用不到);
4.匿名类构造函数无法实现,因此通常定义的匿名类都是无参的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2