少了个第5行吧,如果是:
public void method(String o) {
就当然选c了

解决方案 »

  1.   

    少了个第5行 public void method(String o) {
    能解释一下为什么选c吗?
      

  2.   

    null属于简单数据类型,
    可以赋值给String变量
      

  3.   

    还是不解,
    1。 Object都可以为null,为什么说null属于简单数据类型呢?
    2。 为什么简单数据类型就可以赋值给String变量呢?String不也是个类吗?
    3。这个会不会跟编译器的选择有关呢?null可以看作是Object,也可以被看作是String时,编译器将其当作较为具体的一个类,是这样吗?
      

  4.   

    http://www.csdn.net/expert/Topic/300/300131.shtm
    http://www.csdn.net/expert/topic/324/324293.shtm
      

  5.   

    http://www.csdn.net/expert/Topic/300/300131.shtm
    这是一个OverLoad的问题(不是OverRiding),当你传入NULL时,编译器会自动匹配最"特殊"的参数,这里特殊是指String派生自Object,所以,String比Object特殊,(你应该明白吧!这是面向对象的基本思想),第二题为什么错,是因为StringBuffer与String都是同一等级的,因此,传入Null时,编译器无法辨别,So it's wrong !!! 同以级别可以理解,但为什么是匹配最“特殊”的参数呢?只是SUN的规定还是有什么道理?
      

  6.   

    这是面向对象的基本思想!
    就是说:
        如果B是A子类,即B比A特殊。
        如果有参数C类型是B,当然应当首先匹配B参数,因为B比A更具体、更特殊、更接近实体本身。
      

  7.   

    向大侠学习!哈哈!咳咳咳咳咳今天,我谈三点意见咳咳这个第一点呢,longbow74()已经讲过了
    这个第二点呢,和Polarislee(北极星)的意见是完全相同
    这个第三点呢,我我不讲大家也都已经知道了哈哈哈哈哈
      

  8.   

    "如果有参数C类型是B,当然应当首先匹配B参数,因为B比A更具体、更特殊、更接近实体本身。"
    并没指定null是String类型啊