黑马程序员技术交流社区
标题:
题不会,求解答
[打印本页]
作者:
ma464526717
时间:
2016-2-24 21:58
标题:
题不会,求解答
class TestA {
public void start() { System.out.println("TestA"); }
}
public class TestB extends TestA {
public void start() { System.out.println("TestB"); }
public static v.id main(string[] args) (
((TestA)new TestB()).start();
}
}
运行结果是哪项?
A. TeStA
B. TeStB
c.编译失败
D.运行时抛出异常
作者:
qijia004
时间:
2016-2-24 22:06
应该是选 B
作者:
z2585261
时间:
2016-2-24 22:07
不会..........
作者:
yindalei00
时间:
2016-2-24 23:18
不会+1!!!!!!!!!!!!!!!
作者:
huang_bing_hua
时间:
2016-2-25 08:27
1.首先上述代码的大小写的规范性,代码正确性(void写错,应该是粗心导致的吧)以及阅读性有待提高
2.选项里出现的TeSta书写不规范,我理解成输出TestA
3.考察的知识点是多态成员方法访问的特点以及向下转型,
作者:
huang_bing_hua
时间:
2016-2-25 08:36
最后一行代码其实就是TestA ta=new TestB();
ta.start();
其实就是多态的向上转型,多态方法访问的特点:编译看左边(先看父类有没有start()方法,没有就报错),运行看右边(方法重写),
选b
作者:
15266913109
时间:
2016-2-25 09:20
帮顶,哈哈
作者:
xuecmg
时间:
2016-2-25 09:46
B
作者:
JeromeLiee
时间:
2016-2-25 09:51
选B 运行看左边 方法看右边 考察的是多态。
作者:
zapoo
时间:
2016-2-25 10:33
你这个编译肯定出错,修改之后选b
作者:
15856681986
时间:
2016-2-25 16:45
既然都有时间来发帖,那运行一下不就知道了
作者:
stapan1
时间:
2016-2-25 17:53
((TestA)new TestB()).start();你应该是这里看不明白吧!new TestB()先看这里是不是匿名对象,然后前面加(TestA)就是向下转型((TestA)new TestB())这还是匿名对象的书写直接.调用对象的方法.。当还原就是
TestA ff =(TestA)new TestB();然后就是ff..start();这样是不是很明了的编译看左边,运行看右边。所以运行的时候看
TestB()里面的start()方法
作者:
stapan1
时间:
2016-2-25 17:55
huang_bing_hua 发表于 2016-2-25 08:36
最后一行代码其实就是TestA ta=new TestB();
ta.start();
其实就 ...
你没有向下转这样写的结果是A
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2