image.png

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