我通过解决一些练习来学习,我必须使用 Java 创建一个 Android 应用程序,这个应用程序有 3 个主要类,分别是汽车、船和拖车。这 3 个类共享一些属性,例如,Car 和 Tow 都有 License Plate,Car 和 Boat 都有负载重量。现在我正在做的是创建两个抽象类,Vehicle 和 VehicleWithPlate,其中 Car 继承自 VehicleWithPlate,而 Boat 继承自 Vehicle。 VehicleWithPlate 继承自 Vehicle。
这甚至可能不是最好的方法,但现在的问题是我需要将负载重量实现到这些父类(super class)之一中,并且创建一个 VehicleWithWeight 不是最好的选择,因为如果一辆车既有重量又有板,就会有冲突。我知道在 Java 中“实现”多重继承的一种方法是使用接口(interface),而且我知道接口(interface)只是实现抽象方法,而不是属性。这样做的最佳方法是什么?到目前为止,我的解决方案是将 loadWeight 属性分别实现到 Vehicle 和 Boat 中,但这看起来并不干净。
汽车
public class Car extends VehicleWithPlate{
private float loadWeight;
public Car(String plate, int passengersNum, int maxPassengers, float loadWeight) {
super(plate, passengersNum, maxPassengers);
this.loadWeight= loadWeight;
}
public float getLoadWeight() {
return loadWeight;
}
}
船
public class Boat extends Vehicle{
private float loadWeight;
public Barco(int passengersNum, int maxPassengers, float loadWeight) {
super(passengersNum, maxPassengers);
this.loadWeight= loadWeight;
}
public float getLoadWeight() {
return loadWeight;
}
}
车辆
public abstract class Vehicle {
protected int passengersNum;
protected int maxPassengers;
public Veiculo(int passengersNum, int maxPassengers){
this.passengersNum= passengersNum;
this.maxPassengers= maxPassengers;
}
}
VehicleWithPlate
public abstract class VehicleWithPlate extends Vehicle {
protected String plate;
public VehicleWithPlate (String plate, int passengersNum, int maxPassengers) {
super(passengersNum, maxPassengers);
this.plate= plate;
}
public String getPlate() {
return plate;
}
}
也许我遗漏了什么,我知道重复一些代码并不是世界末日,但作为一名学生,我真的很想知道用专业的方法来处理这种基本的事情。
最佳答案
看看组合设计和继承设计的区别:here .听起来很像你真的在这里上了几节课。 LicensePlate
类、LoadWeight
类,以及您之前提到的所有车辆类。这两个新类都是“has-a”类型关系,而不是“is-a”类型关系(A Car
has-a LicensePlate
,a 船
有一个LoadWeight
)。希望这可以帮助!
关于java - 从 Java 中的多个父类/父类(super class)继承属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56606431/