Java基础-继承的使用

package com.hspedu.testsuper_;

public class Test {
    public static void main(String[] args) {
        // 测试

        /**
         * 1、创建子类对象时,父类的构造器会被调用,
         *  不指定构造器时,调用无参构造器;
         *  如果没有无参构造器,则需要显示指定父类构造器super(..);,或者直接super(..);指定父类构造器
         */
        Cat cat = new Cat();
        Cat white = new Cat("小白", 2);

        System.out.println("========================================");

        /**
         * 2、创建子类对象可以super(..); 和 this(..);必须使用一种,不能共存且都在构造器首行
         *  super指定父类构造器,this指定本类构造器
         */
        Cat black = new Cat("小黑");

    }
}

class Animal {
    private String name;
    private int age;

    public Animal(String name, int age) {
        System.out.println("调用Animal(String name, int age)构造器.");
        this.name = name;
        this.age = age;
    }

    public Animal(String name) {
        System.out.println("调用Animal(String name)构造器.");
        this.name = name;
    }

    public Animal() {
        System.out.println("调用Animal()构造器.");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

class Cat extends Animal {
    public Cat(String name, int age) {
        super(name, age);   // 显示调用父类的Animal(String name, int age)构造器
        System.out.println("Cat(String name, int age).");
    }

    public Cat() {
        // 隐式调用父类的Animal()构造器,等价于 super();
        System.out.println("Cat().");
    }

    public Cat(String name) {
        this();
        System.out.println("Cat(String name)调用Cat().");
    }
}

 

posted @ 2022-05-05 16:00  柯南同学  阅读(23)  评论(0编辑  收藏  举报