- 修改代码如下:
- 修改
Animal
抽象类,添加getInfo
抽象方法:
abstract class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
abstract void makeSound();
// 添加抽象方法getInfo
abstract String getInfo();
}
- 修改`Dog`类,实现`getInfo`方法:
class Dog extends Animal {
public Dog(String name) {
super(name);
}
@Override
void makeSound() {
System.out.println("Woof!");
}
@Override
String getInfo() {
// 实现getInfo方法,返回狗的名字和叫声信息
return "Name: " + name + ", Sound: Woof!";
}
}
- 抽象类构造函数在继承体系中的作用:
- 初始化成员变量:抽象类的构造函数用于初始化抽象类中定义的成员变量。例如在上述代码中,
Animal
类的构造函数public Animal(String name)
用于初始化name
成员变量。这样,当子类创建对象时,通过super
关键字调用抽象类构造函数,可以确保抽象类中的成员变量被正确初始化,为子类对象的创建奠定基础。
- 保证继承体系的一致性:它确保了整个继承体系中对象创建的一致性。所有继承自该抽象类的子类,在创建对象时,都会首先调用抽象类的构造函数,按照抽象类设定的方式初始化部分状态,使得子类对象在创建时具备抽象类定义的基本属性和状态,从而保证了继承体系中对象状态的一致性和完整性。