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

知道为什么吗?

    来源: 互联网  发布时间:2015-02-06

    本文导语:  Q78  What is the result of attempting to compile and run the following program  1. public class Test {  2. public void method(Object o) {  3. System.out.println("Object Version");  4. }  5. public void method(String s) {  6. System.out.println("...

Q78 
What is the result of attempting to compile and run the following program 

1. public class Test { 

2. public void method(Object o) { 
3. System.out.println("Object Version"); 
4. } 

5. public void method(String s) { 
6. System.out.println("String Version"); 
7. } 

8. public static void main(String args[]) { 
9. Test test = new Test(); 
10. test.method(null); 
11. } 
12. } 

Select one correct answer 
a. The code does not compile. 
b. The code compiles cleanly and shows "Object Version". 
c. The code compiles cleanly and shows "String Version". 
d. The code throws an Exception at Runtime. 
Answer:c


Q79 
What is the result of attempting to compile the following program 

1. public class Test { 

2. public void method(StringBuffer sb) { 
3. System.out.println("StringBuffer Verion"); 
4. } 

5. public void method(String s) { 
6. System.out.println("String Version"); 
7. } 

8. public static void main(String args[]) { 
9. Test test = new Test(); 
10. test.method(null); 
11. } 
12. } 

Select one correct answer 
a. The code does not compile. 
b. The code compiles correctly and shows "StringBuffer Version". 
c. The code compiles correctly and shows "String Version". 
d. The code throws an Exception at Runtime
Answer:a.

请详细解释:

|
首先,我可以告诉xiaming兄,SCJP考试,不会考这么容易的题。
以下是解答:
           这是一个OverLoad的问题(不是OverRiding),当你传入NULL时,编译器会自动匹配最"特殊"的参数,这里特殊是指String派生自Object,所以,String比Object特殊,(你应该明白吧!这是面向对象的基本思想),第二题为什么错,是因为StringBuffer与String都是同一等级的,因此,传入Null时,编译器无法辨别,So it's wrong !!! 

|
import java.awt.*;

public class demo

    public void method(Object o) 
    { 
        System.out.println("Object Version"); 
    } 
    
    public void method(int i) 
    {
        System.out.println("Int Verion"); 
    } 
    public void method(StringBuffer sb) 
    {
        System.out.println("StringBuffer Verion"); 
    } 
    public void method(String s) 
    { 
        System.out.println("String Version"); 
    }
    public void method(Button b)
    {
        System.out.println("Button Version");
    }

    public static void main(String args[]) 
    { 
        demo demo = new demo(); 
        demo.method((Button)null);
        demo.method((StringBuffer)null);
        demo.method((String)null);
        demo.method((Object)null);
//      demo.method((int)null);//this can not passed
        demo.method((int)('9'));
    } 



结果:
Button Version
StringBuffer Verion
String Version
Object Version
Int Verion

|
TO:Norwaywoods(挪威的森林)
你的看法基本上是对的……
实际上这种情况下,满足条件的多个方法如果不具有继承关系,则编译器就会报错,和是否同一等级无关……
但为什么是匹配最“特殊”的参数呢?SUN对此有说明吗?你是在哪里知道的呢?

    
 
 

您可能感兴趣的文章:

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












  • 相关文章推荐
  • 如何知道在linux下面如何知道mysql服务是用哪个端口啊
  • 那位知道怎样能知道 linux C/C++文件它所依赖的文件
  • 哪位大哥知道?我怎样知道LINUX redhat 7.2下声音设备由哪个应用程序占用?
  • 我做了个简单的留言板,不知道如何知道留言者的ip地址?
  • 只知道一个命令, 不知道其进程,问如何停止它?
  • red hat linux 9.0安装问题,不知道有人知道吗?
  • 知道进程的ID,有什么函数知道这个进程还活不活?
  • 我插入USB设备,知道是1-1:1.0下面,如何知道ttyUSB?
  • UI小问题,可我就是不知道怎么实现,或许您知道……
  • 我在rh8下装了wine,可是我不知道装到哪里了,那位知道默认路径?
  • 请问如何在不知道对方IP,仅知道MAC地址的情况下和对方通信呢?
  • 已知一个进程的PID,但不知道这个进程是否停止,如何能知道系统中是否有相应的进程在运行。
  • 不知道这个问题是否有人知道!
  • 在不知道表结构的前提下,怎样把该表的一条记录打印出来?(即不知道各字段类型时,用哪个方法?)
  • SUN OS5.8怎么没有make ,我想装APACHE2.0不知道怎么下手,原来的APACHE1.3有不知道怎么卸载
  • 要在arm开发板上实现DHCP+方式拨号上网,谁能给点下手的思路,知道不知道都给点意见吧?
  • 可信计算你知道嘛?红旗的可信计算你知道嘛?
  • 我装了jbuilder5,知道sn,但没有注册,每次启动都要跳出个jbuilder licence,要你注册,烦得很,那位大虾知道注册码,千万告诉小弟我,谢了
  • 我现在只有debian kernel 2.6,我把disc1的iso格式释放到了我的硬盘上面,我不知道里面有什么软件,也不知道怎样安装这些软件,莫展一筹
  • 一JSP网站,统一指定一个errorPage页面,统一处理异常,在指定的errorPage页面中,我想知道具体是哪个页面出错的,即想知道出错页面的具


  • 站内导航:


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

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

    浙ICP备11055608号-3