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术语中,如果C1类扩展自另一个类C2,我们称C2为父类,也称超类或基类,称C1为子类,也称次...
    Steven1997阅读 4,991评论 1 2
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 7,947评论 2 9
  • 本章将会介绍 存储属性的初始赋值自定义构造过程默认构造器值类型的构造器代理类的继承和构造过程可失败构造器必要构造器...
    寒桥阅读 4,123评论 0 0
  • 构造过程 构造过程是使用类、结构体或枚举类型的实例之前的准备过程。在新实例可用前必须执行这个过程,具体操作包括设置...
    蛊毒_阅读 4,005评论 0 2
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 5,013评论 0 2