【发布时间】:2019-11-14 22:51:22
【问题描述】:
您好,我是 Java 的初学者,我正在研究课程作业,我正在努力解决继承问题。如果子类中的参数与超类的参数匹配,然后将子类构造函数中的剩余参数分配给该子类的实例变量,我将了解如何使用 super 从超类引用构造函数。
我感到困惑的是,如果我想创建一个子类的对象,其中构造函数只有部分参数,但该子类仍然可以引用超类的方法来返回其名称。下面的示例无法编译,因为它期望在 Car 的构造函数中的两个字符串之上输入 String。
我是不是误会了什么?
public class Vehicle{
private String fuelType;
public Vehicle(String fuelType){
this.fuelType = fuelType;
}
public String getType(){
return this.fuelType;
}
}
public class Car extends Vehicle{
private String make;
private String model;
public Car (String make, String model){
this.make = make;
this.model = model;
}
}
【问题讨论】:
-
如果一个 Vehicle 有一个fuelType,并且如果Car 是一个Vehicle,那么Car 也有一个fuelType。如果没有,那么它不应该扩展 Vehicle。
-
您可能需要阅读受保护的关键字:codejava.net/java-core/the-java-language/protected-keyword
-
Car构造函数需要调用Vehicle构造函数,因为如果不创建Vehicle,就无法在逻辑上创建Car。 (这不是不同的车辆,只是汽车是车辆,因此创建汽车需要创建车辆。)如果您不想接受燃料类型作为@987654327 的参数@构造函数,传递一个常量值比如super("gasoline");怎么样?
标签: java inheritance constructor