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()."); } }