黑马程序员技术交流社区
标题:
面试小问题
[打印本页]
作者:
ς高眼光の目标
时间:
2014-4-19 15:53
标题:
面试小问题
本帖最后由 ς高眼光の目标 于 2014-4-20 15:20 编辑
面试
//1
new Object(){
void show(){
System.out.println("show run");
}
}.show();
//2
Object obj = new Object(){
void show(){
System.out.println("show run");
}
};
obj.show();
1和2的写法正确吗?有区别吗?说出原因
复制代码
作者:
ノtrack
时间:
2014-4-19 16:18
肯定有区别呀
第一种只能调用一个方法 第二可以调用多个方法
作者:
刘晶
时间:
2014-4-19 16:20
都正确,如果里面的方法只有一个,这两种写法是一样的,但是里面有两个方法都想调用,用2比较合适,非要用1,那必须在建立一个匿名对象再调用方法
例如
//1
new Object(){
void show(){
System.out.println("show run");
} void abc()
{
System.out.println("abc");
}
}.show();
new Object(){
void show(){
System.out.println("show run");
} void abc()
{
System.out.println("abc");
}
}.abc();
//2
Object obj = new Object(){
void show(){
System.out.println("show run");
}
void abc() {
System.out.println("abc");
}
};
obj.show();
obj.abc();
如果父类中没有abc的方法就不能用调用abc
作者:
付江涛
时间:
2014-4-19 16:21
都正确。
2 取了个名字,可以调用多个方法
作者:
织语不如书
时间:
2014-4-19 16:26
1正确,匿名内部类创建子类实例直接调用方法
2不对的 show()方法不是方法复写,你的声明类型是Object类型,里面没有show()方法的,不会调用子类的show()方法
作者:
skill20
时间:
2014-4-19 18:46
本帖最后由 skill20 于 2014-4-19 22:58 编辑
1没有问题,都可以调用show()方法;2错了:第二种是多态的应用,父类的引用指向了自己子类的对象。调用的是子类的方法。但要注意的是这个方法父类也有定义就ok,如果要调用子类特有的(不是覆盖的)那么要进行类型的强制转换。
作者:
清风有意
时间:
2014-4-19 19:01
1可以使用,这个对象调用自己的方法。
2是多态的问题,Object不能调用子类的方法show(),在eclipse中键盘敲击'.'的时候没有这个show()方法
作者:
ς高眼光の目标
时间:
2014-4-19 19:59
呵呵,一道小题目难倒了那么多人,回去再努力努力才行,答案是1正确,2错误的多态的问题
作者:
执笔梦
时间:
2014-4-20 21:23
第一个对了:相当于继承Object类,然后创建自己本类的方法show(),可以调用。
第二个错了,创建的是一个子类对象,相当多态吧,因为Object类的没有show();方法(子类特有)。所有是调用不了的...要是对的话,求技分术
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2