Java继承之构造器

1.无参构造方法

  • 父类
public class Person {
    private String name;
    public Person(){
        Log.i("Person constructor...");
    }
}
  • 子类
public class Man extends Person{
    public Man(){
        Log.i("Man constructor...");
    }
    public static void main(String[] args){
        new Man();
    }
}
  • 运行结果
sela->Person constructor...
sela->Man constructor...
  • 总结
    从父类到子类一级一级完成构建,子类不用手动调用super()

2.有参构造方法

  • 父类
public class Person {
    private String name;
    public Person(String name){
        this.name = name;
    }
}
  • 子类
public class Man extends Person{
    public Man(){
        Log.i("Man constructor...");
    }
    public static void main(String[] args){
        new Man();
    }
}
  • 结果
编译报错,提示Implicit super constructor Person() is undefined. Must 
explicitly invoke another constructor
  • 总结
    编译器会帮我们自动创建一个无参的构造方法,但是如果像我们这个父类中,添加一个有参数的构造方法,编译器会以为我们无需他的帮忙自动创建,但是子类里是需要的,所以会报错,解决方法为
public class Man extends Person{
    public Man(){
        super("");//添加这行
        Log.i("Man constructor...");
    }
    public static void main(String[] args){
        new Man();
    }
}

你可能感兴趣的:(Java继承之构造器)