黑马程序员技术交流社区
标题:
关于匿名内部类的一个小问题
[打印本页]
作者:
blackstones1
时间:
2014-6-10 19:27
标题:
关于匿名内部类的一个小问题
new Object()
{
public void show()
{
System.out.println("show run");
}
}.show();
Object obj = new Object()
{
public void show()
{
System.out.println("show run");
}
};
obj.show();
这两个匿名内部类有区别吗 要是有的话具体在哪里 新手 求大婶详解
作者:
Super__kids
时间:
2014-6-10 19:31
第一个可以方法只能调用一次
第二个可以呀多次。
作者:
执笔梦
时间:
2014-6-10 19:48
第一个可以执行,
第二个编译不通过吧。
new Object()
{
public void show()
{
System.out.println("show run");
}
}.show();
创建一个Object子类对象,,调用子类的特有方法,
第2种方法也是创建一个Object的子类对象,但它向上转型了,它是父类引用指向了自己的子类对象。所以不能调用了子类的特有方法。所以会出错。
作者:
liujie445012100
时间:
2014-6-10 21:47
楼上想说的正是在下想说的
作者:
格子、
时间:
2014-6-10 22:53
我个人觉得两种编译都能通过,因为符合Java对象多态的特点,不同的是,第一个是匿名内部类,第二个是内部类,但是运用了多态的特点,将父类的引用指向了子类,并覆盖了方法,但仅限于调用父类方法!!!
作者:
少先队员
时间:
2014-6-10 23:40
匿名内部类 是简写格式。 如果一个类里面的方法你只调用一次 , 那你就用匿名内部类。
作者:
执笔梦
时间:
2014-6-11 10:25
格子、 发表于 2014-6-10 22:53
我个人觉得两种编译都能通过,因为符合Java对象多态的特点,不同的是,第一个是匿名内部类,第二个是内部类 ...
可是Object中没有show()这个方法.
作者:
zly1992008
时间:
2014-6-11 10:28
是的,都已经正解了
作者:
blackstones1
时间:
2014-6-11 19:16
原来是向上转型啊 把前面的视频看了下 搞懂了 谢谢 大家了 {:3_53:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2