Java 避免在同级类中重复代码
初学者问题-我如何避免在兄弟类中重复代码,因为每个类都有同一字段的不同版本? 请参见下面的示例:我是否可以将getName()方法(以及更复杂的方法)移动到父类Java 避免在同级类中重复代码,java,Java,初学者问题-我如何避免在兄弟类中重复代码,因为每个类都有同一字段的不同版本? 请参见下面的示例:我是否可以将getName()方法(以及更复杂的方法)移动到父类 public abstract class Car { public abstract String getName(); } public class PassengerCar extends Car { private String name = "Passenger Car"; @Override p
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
@马克的答案是解决方案,但让我给它添加一点背景知识 简单的经验法则:如果您想要所有子类都有共同点的东西,请将其放入父类中 你有什么
- 所有子类都使用一个名为
的字段(值不同并不重要,请参见下文)name
- 所有子类都使用名为
的gettergetName()
- 所有乘客卡实例的初始值
“乘用车”
- 所有
实例的初始值CoalCar
“CoalCar”
因此,
name
字段和getName()
方法进入Car
,该字段的不同初始值进入PassengerCar
和CoalCar
的构造函数,尝试了什么?