Java构造详解
本文就Java构造加载做以下描述:java中,构造不可继承,但构造可通过隐式或者显式调用。隐式默认调用父类的无参构造,省略super关键字;显示调用时,在子类的构造方法的第一行通过super关键字初始化父类实例,必须放在第一行,否则在初始化子类的时候并没有完成对父类的初始化,引发编译器保存。
下文用一下简单的类说明对应关系
public class B{
public B(){
//无参构造是默认的,如果提供有参构造时,则无参构造不存在,若需使用,需显式说明
System.out.println("子类无参数构造执行");
}
pulic B(String s){
System.out.println("子类有参构造执行");
}
}
public class A extends B{
public A(){
//此处默认省略了super();
System.out.println("父类无参数构造执行");
}
public A(String s){
//此处不书写时,默认调用父亲的无参构造
System.out.println("父类有参数构造执行");
}
}
测试:
1.实例化A无参数构造时:输出结果如下:
父类无参数构造执行
子类无参数构造执行
2.实例化A有参数构造时:输出结果如下:
父类无参数构造执行
子类有参数构造执行
下文详解:静态代码块的加载方式