黑马程序员技术交流社区
标题:
有关匿名内部类的问题
[打印本页]
作者:
0803宝
时间:
2015-8-17 21:50
标题:
有关匿名内部类的问题
是定义在局部位置的没有名字的内部类。
前提: 存在一个类,抽象类,或者接口。
本质理解:其实这是一个继承类或者实现接口的匿名的子类对象。
可是就是不会用,也看不懂匿名内部类。
作者:
蓬头小道士
时间:
2015-8-17 22:11
其实就是复写父类的子类就是没有名字,多看看视频,多写几次,就理解了。
作者:
keviner
时间:
2015-8-17 23:46
本帖最后由 keviner 于 2015-8-17 23:47 编辑
new fu() {
void method(){}
}.method();
父类引用建立匿名子类对象并调用method方法。
大概就这个意思吧
作者:
sangyuan
时间:
2015-8-19 11:56
本帖最后由 sangyuan 于 2015-8-19 12:01 编辑
之前回复过类似的帖子,给你附上个代码,你一看应该就明白有什么好处了。
/*
所有父类或者父接口出现的地方,完全可以用子类对象替代。
*/
interface Animal
{
public abstract void eat();
}
//方式一:普通的方法,创建一个Dog类来实现接口Animal的show方法,然后在下面测试类中,再创建一个对象来调用这个方法
/*
class Dog implements Animal
{
public void eat()
{
System.out.println("eat dog");
}
}
*/
class Test
{
//一个方法的形式参数是接口(抽象类)
public void show(Animal a) //Animal a = new Dog();
{
a.eat();
}
}
class AnimalTest
{
public static void main(String[] args)
{
Test t = new Test();
//Dog d = new Dog();
//t.show(d);
//方法二:使用匿名内部类,这样就不用再创建类,也不用再测试类中创建对象,需要注意的是,在这儿,匿名内部类是作为show方法里的参数进行传递的。
t.show(new Animal(){
public void eat()
{
System.out.println("eat dog");
}
});
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2