构造方法跟继承

构造方法和继承
构造函数能不能被继承?
为什么继承父类的构造函数也能正确编译啊??
------解决思路----------------------
构造函数是不能被继承的,但是,子类在写构造函数的时候,需要首先去调用父类的构造函数,如果不显示调用,那会调用父类那个不带参数的构造函数。
------解决思路----------------------
继承的是类,不是方法,应该是继承一个累,从继承中获得方法,哪有直接说继承方法的。
------解决思路----------------------
引用:
这个我知道啊,但是Eclipse中

Java code

 class A{
        public A(){
        }
        public A(int i){
        }
    }
    class B extends A{
        public void A(){
            
        }
    ……


这个不叫调用父类构造函数,只是在子类里定义了一个名字与父类构造方法名同名的方法,并且注意你定义的这个方法必须是有返回值的,而父类的构造函数没有。所以这两个方法之间就这么点关系。如果你在子类中显示调用A方法,那调用的是子类自己定义的方法,而不是父类的构造方法。父类的构造方法只能在子类构造方法的第一个语句用super(..)方式调用。
------解决思路----------------------
子类必须实现父类的构造函数。只不过,有的父类是空,子类也是空,好像没管理其它是默认的。
下边的程序就出错

class a {
  public a(int a) {
  }
}
class b extends a {
  public b() {

  }
}

------解决思路----------------------
引用:
这个我知道啊,但是Eclipse中
Java code

 class A{
        public A(){
        }
        public A(int i){
        }
    }
    class B extends A{
        public void A(){
            
        }
    }



这样也可以啊……


在初始化子类的对象时  必须要调用调用到父类的构造函数如果父类里没有空参数的构造函数时 ,子类就要用super(参数);的形式或者this语句的形式调用了 ,否则会编译失败的,但是只能重写父类的一般方法,一定能、不能重写父类的构造方法,因为构造函数是用类名定义的,子父类的类名肯定不会是一样的。你应该是没有把覆盖的概念理解好吧。。我是个新手不知能不能帮到你。。我是这样理解的,理性采纳哈。。。。
------解决思路----------------------
引用:
这个我知道啊,但是Eclipse中

Java code


 class A{
        public A(){
        }
        public A(int i){
        }
    }
    class B extends A{
        public void A(){
            
        }
  ……


这个不是调用父类的构造函数,这个知识B里的一个方法A(),
在继承中是不可能继承父类的构造函数的,父类的构造函数只能在子类的构造函数的第一行用super()方式来调用的
------解决思路----------------------
如果在子类的构造方法中 没有super关键字 那么是默认存在super()在子类构造方法的首行的。 子类的构造方法是可以通过super关键字使用父类的构造方法的
------解决思路----------------------
父类的构造函数怎么可能被子类继承呢,构造函数的名字和类名一样。子类是从父类继承的,因此在编译子类的时候就先编译父类的构造函数进行初始化。