
package com.itheima.d10_extends_constructor;
public class Test {
public static void main(String[] args) {
// 目标:认识继承后子类构造器的特点
// 特点:子类的全部构造器默认会先访问父类构造器
// 创建对象,就会自动调用构造器
Dog d1 = new Dog(); // 创建子类对象,会先调用父类构造器,再调用子类构造器
// 先执行构造器,再打印地址
System.out.println(d1);
// 使用有参构造器
Dog d2 = new Dog("lxc");
System.out.println(d2);
}
}
// 这是一个父类
package com.itheima.d10_extends_constructor;
public class Animal {
public Animal(){
System.out.println("父类Animal无参构造器被执行");
}
}
// 这是一个子类
package com.itheima.d10_extends_constructor;
public class Dog extends Animal{
public Dog(){
// 每个子类构造器都有默认的父类构造器
super(); // 写不写都有,默认找父类的无参构造器执行
System.out.println("子类Dog无参构造器被执行");
}
// 定义应该子类有参构造器
public Dog(String name){
super(); // 写不写都有,默认找父类的无参构造器执行
System.out.println("子类有参构造器" + name +"被执行");
}
}