如题   我在一java面试题中看到: 构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading   以下是我的测试:
Overloadingclass A {
  public A() {}
}
public B extends A {
   public void A(String str) {}
}
   这样编译没有错,还服合OverLoading的语法,所以我认为构造方法可以OverLoading;Override
Overloadingclass A {
  public A() {}
}
public B extends A {
   public void A() {}
}
   显然:public A() 和 public void A() 不是Override。
但是如果你用Eclipse编写的话,你会发现确 public void A() {}
前面有一个tips,提示“Overrieds A.A”,这和普通方法的Override一样,
这难道是Eclipse的Bug,还是其它什么?
如题,谁能给一个确切的解释?   

解决方案 »

  1.   

    public B extends A 这样编译没有错?
      

  2.   

     public void A(String str) {}这个已经不叫构造了。这个方法是子类时边新定义的一个图。
    构造方法是方法名与类名同相,没有static关键字,没有返回值的方法。
      

  3.   

    少数class,  一心不能二用。。
     加上就可以。
      

  4.   

    在Myeclipse确实如楼主所说,提示override,我认为是bug。
      

  5.   

    构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading这句话是对的。至于你写的代码,
    在B中的 public void A() {}只是定义了一个方法A而已。这样写不符合构造方法的语法。你不妨试试 public A() {} 能编译通过不。构造方法可以被重载,大家都知道,不说了。
      

  6.   

    首先构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading 这句话没错。第二
    class A {
      public A() {}
    }
    public class B extends A {
       public void A(String str) {}
    }
     public void A(String str)这个不是构造函数,构造函数是不能有返回值的,连void也不能有。这个也不是Overloading 
    ,因为Overloading的条件是参数不同,方法名和修饰符相同。
      

  7.   

    回复八楼:
    在B类中写出public A() {} 肯定是不对的,也就是说不能覆盖。
    但你说可以重载,我这样:public void A() {} 写不对,那应该怎么写?
    public A(参数列表){},这样有错。
      

  8.   


    class A{
    public A(int a,int b){
    }
    public A(String c,String d){}
    }这叫构造函数的重载
      

  9.   

    class A {
      public A() {}
      public A(String str){}//重载
    }
    public B extends A {
    public B(){}
       public B(String str) {/*super(str);*/}
    }
      

  10.   

    重载(overload)是同一个类中名字相同但参数不同的多个方法;覆盖(override)是在有继承关系的父、子两个类中名字,参数都相同的方法。不知我理解得对不对。
      

  11.   

    cxvxcvxz
      

  12.   


    说的非常明白,如果原回答也这样就好了。
    这样的话,我的帖子中的另一个问题就是Eclipse中的Bug了。构造器Constructor不能被继承,因此不能重写Overriding,但可以在本类中重载Overloading 。
      

  13.   

    一、二、何为构造方法:即方法名与类名相同,没有返回类型,不能被static ,final,synchronized,abstract,native修饰的方法。
    明白这两点后,相信你就会明白构造方法是不能被重写的。只能被重载
      

  14.   

    是的,那个出现的提示是个bug
      

  15.   

    恩,那是个小bug,
    eclipse中基类有普通方法和超类某个构造方法同名且参数一样,就会出那个提示.