首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java中子类承继父类的构造方法吗

2013-07-08 
java中子类继承父类的构造方法吗?看java2实用教程上写的 子类不能继承父类的构造方法百度了一下,有人说能

java中子类继承父类的构造方法吗?
看java2实用教程上写的 子类不能继承父类的构造方法
百度了一下,有人说能继承,也有人说不继承
自己写了一段试了一下


class A {
A() {
System.out.println("调用了");
}
}

class B extends A {
    B(){
        System.out.println("no");
    }
}

public class E {
  public static void main(String[] args) {
  B b = new B(); //OK
  }
}

run:
调用了
no
这算调用了吗,到底怎么回事?能不能具体讲讲,谢谢了
[解决办法]
继承问题,子类实例化生成对象时,把这个类加载到JVM上,会先生成类的实例,但是new关键字有一个特殊的性质就是会先调用类的无参构造方法,如果这个类继承了父类,则子类实例化时,会先调用父类的无参构造方法,因此在这儿B b = new B()的过程中,会先调用A类的无参构造方法
[解决办法]
首先,方法是没有继承一说的,只有覆写或者重载,类和类之间才能叫继承。
其次,你所出现的效果,是类的一个初始化的顺序问题,子类在初始化的时候会先调用父类的构造方法,所以打出了你的那句话。
最后,子类可以使用super()显示调用父构造器,没有重写的必要。
[解决办法]
子类不会继承父类的构造方法,但是子类在实例化对象时:如果子类的构造器没有显示的调用超类的方法,则将自动调用超类默认构造器。如果超类没有不带参数的构造器,且子类的构造器中又没显示的调用超类其他构造器,则Java编译器将报告错误(java核心技术P146)。

热点排行