我不知何故认为这样做是个坏主意。这样做通常很常见吗?我不确定它的用法,因为我在实践中从未见过它,无论如何都是一个现实世界的例子。
public abstract class Car{
protected int speed;
public Car(int speed){
this.speed = speed;
}
}
public class Ambulance extends Car{
public Ambulance(int speed){
super(speed);
}
}
答案 0 :(得分:7)
使用超类构造函数是标准练习。当在超类构造函数中对变量进行某些验证时,它允许代码重用。
例如,检查来自Apache Commons Collection的this代码。
使用时,super(..)
必须是子类构造函数中的第一个语句。
答案 1 :(得分:1)
请考虑以下事项:
public abstract class Vehicle {
protected int numWheels;
protected int speed;
public Vehicle() {
this.speed = 0;
}
}
和
public class Car extends Vehicle {
public Car() {
super();
this.numWheels = 4;
}
}
所有车辆都有速度,默认为0,但只有车有4个车轮。
答案 2 :(得分:0)
对于遗产而言,它是绝对必要的。这就是为什么具有不同构造函数的抽象类迫使您实现所有这些
的原因