首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

麻烦各位帮小弟我看看这道题 多谢

2012-01-18 
麻烦各位帮我看看这道题 谢谢1. interface Animal {2. void soundOff()3. }4.5. class Elephant implemen

麻烦各位帮我看看这道题 谢谢
1. interface Animal {
2. void soundOff();
3. }
4.
5. class Elephant implements Animal {
6. public void soundOff() {
7. System.out.println(“Trumpet”);
8. }
9. }
10.
11. class Lion implements Animal {
12. public void soundOff() {
13. System.out.println(“Roar”);
14. }
15. }
16.
17. class Alpha1 {
18. static Animal get( String choice ) {
19. if ( choice.equalsIgnoreCase( “meat eater” )) {
20. return new Lion();
21. } else {
22. return new Elephant();
23. }
24. }
25. }
Which compiles?
A. new Animal().soundOff();
B. Elephant e = new Alpha1();
C. Lion 1 = Alpha.get(“meat eater”);
D. new Alpha1().get(“veggie”).soundOff();
Answer: D

答案c错在哪?

[解决办法]
Alpha.get(“meat eater”)在运行期才能确定,再说运行期返回的也是Animal对象,这是面对抽象编程的概念
[解决办法]
Alpha.get(“meat eater”); 
这里假设Alpha就是Alpha1 。返回的是Animal。是Lion的父类,在java中,父类转换为子类必须强制转换,当然前提是父类所引用的对象实际上是该子类的对象,否则会出错。

热点排行