java - 避免在兄弟类中重复代码
问题描述
初学者问题 - 如何避免在兄弟类中重复代码,每个类都有自己不同版本的同一字段?请参见下面的示例:我可以以某种方式将 getName() 方法(以及更复杂的方法)移动到父类吗?
public abstract class Car {
public abstract String getName();
}
public class PassengerCar extends Car {
private String name = "Passenger Car";
@Override
public String getName() { return name; }
}
public class CoalCar extends Car {
private String name = "Coal Car";
@Override
public String getName() { return name; }
}
解决方案
例如,您可以:在父类中创建一个带有名称的构造函数,并在子类的构造函数中指定该名称:
abstract class Car {
private String name;
public Car(String name) {
this.name = name;
}
public String getName() { return name; }
}
class PassengerCar extends Car {
public PassengerCar() {
super("Passenger Car");
}
}
class CoalCar extends Car {
public CoalCar() {
super("Coal Car");
}
}
然后可以这样使用:
Car passenger = new PassengerCar();
System.out.println(passenger.getName());
这打印出来:
Passenger Car