黑马程序员技术交流社区
标题:
匿名内部类的问题
[打印本页]
作者:
钟佩桓
时间:
2013-4-11 00:54
标题:
匿名内部类的问题
本帖最后由 钟佩桓 于 2013-4-11 11:32 编辑
看到毕老师的匿名内部类这儿了 ,感觉头都大了···始终搞不明白
show(new Inter()
{
public void method()
{
System.out.println("method show run");
}
});
}
public static void show(Inter in)
{
in.method();
}
}
这个代码谁能帮我分析讲解下 ,我还是不明白。最好再给我说下匿名内部类该怎么写,始终不会。
作者:
王溢君
时间:
2013-4-11 01:04
把老师的视频多看几次,自己多写几次代码,自然就明白了,没有谁比老师讲得更好的了。
作者:
杨成
时间:
2013-4-11 01:46
本帖最后由 杨成 于 2013-4-11 01:47 编辑
可以这么理解:
new Inter() 这个是创建匿名对象(Inter是要创建的子类的父类名,因为多态,所以省略了名字,直接写它要继承的父类名)。
new Inter(){public void method(){...}} 这个是创建匿名对象,让匿名子类继承父类,添加的新方法method()。
show(new Inter(){public void method(){...}} ); show函数的参数是Inter类型,就是匿名类的父类类型,原因是多态(详细多态请复习多态)。
这样当调用show方法时,就会传递进去一个new Inter(){public void method(){...}} 继承父类Inter的匿名的类并且集成了method方法的对象,之后调用该对象的method方法。
作者:
影响力147753321
时间:
2013-4-11 09:40
匿名内部类是局部内部类的一种特殊情况,它本身无名,当然也就没有构造器了。申明它时必须修同时建立匿名内部类对象。且用的是父类名或其实现的接口名称。由于它在方法中申明。所以可以把它看成实现了某种功能的代码块(被匿名内部类封装)。要调用匿名内部类方法,可将其向上转型成父类或接口来使用。所以上面的代码就好理解了。show(new Inter()
{
public void method()
{
System.out.println("method show run");
}
});
}//在方法中定义 匿名内部类。(
public static void show(Inter in)
{
in.method();
}
}//传入 匿名内部类引用,并调用其方法。
上面的方法也可以写成如下形式
public static void show(){
new Inter() { public void method()
{
System.out.println("method show run");
}
}.method();}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2