【问题标题】:constructor in subclass with only partial parameters of superclass子类中的构造函数,只有超类的部分参数
【发布时间】: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


【解决方案1】:

你可能

  1. 将常量fuelType 传递给构造函数
  2. 在 Vehicle 中创建另一个构造函数并将fuelType 初始化为某个常量值。

但是,在这种情况下,实例化 Car 对象而不指定fuelType 没有多大意义。

【讨论】:

    猜你喜欢
    • 2013-10-25
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    相关资源
    最近更新 更多