当前位置:  技术问答>java相关

求教一道模拟题?

    来源: 互联网  发布时间:2017-03-16

    本文导语:  Given the following class definitions: 1. class BaseWidget extends Object{ 2. String name="BaseWidget"; 3. void speak(){System.out.println("I am a "+name);} 4. } 5. class TypeAWidget extends BaseWidget{ 6. TypeAWidget(){name="TypeA";} 7. } Which of the follow...

Given the following class definitions:
1. class BaseWidget extends Object{
2. String name="BaseWidget";
3. void speak(){System.out.println("I am a "+name);}
4. }
5. class TypeAWidget extends BaseWidget{
6. TypeAWidget(){name="TypeA";}
7. }

Which of the following code fragments will compile and execute without error?
a. Object A=new BaseWidget();
   A.speak();
b. BaseWidget B=new TypeAWidget();
   B.speak();
c. TypeAWidget C=new BaseWidget();
   C.speak();

答案为b.
请问:a 为什么不对???


|
之所以选b 最关键的可是说是因为 Object 类里没有speak()方法
看看这个例子再说
class BaseWidget extends Object{
 String name="BaseWidget";
 void speak(){System.out.println("I am a "+name);}
 }
 public class TypeAWidget extends BaseWidget{
 TypeAWidget(){name="TypeA";}
 void speak(){System.out.println("in the TypeAWidget");}
 public static void main(String args[])
 {
Object A=new BaseWidget();
    //A.speak();

BaseWidget B=new TypeAWidget();
    B.speak();
System.out.println("Class is:" +B.getClass().toString());


 }
}

|
简单一句话:
Object类中没有speak()这个方法。
而a中实例化的是Object类。所以他找不到speak()方法。所以错了。

|
up

|
楼上的对!

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3