gpt4 book ai didi

java - 关于构造一个不使用 super() 扩展抽象类构造函数的子类的问题

转载 作者:行者123 更新时间:2023-11-30 06:04:24 24 4
gpt4 key购买 nike

我是 Java OOP 的新手,并且一直在阅读一本名为 AP Computer Science in Java 的 GitBook 来研究这一点我发现这个页面非常困惑:https://codehs.gitbooks.io/apjava/content/Classes-And-Object-Oriented-Programming/class-design-and-abstract-classes.html

代码是这样的

public abstract class VehicleClass {
private String type;
private String vehicleName;

public VehicleClass(String vType, String vName) {
type = vType;
vehicleName = vName;
}

/* This will need to be abstract, since
* we will need to implement different formulas
* depending on if the vehicle is electric or
* gas powered.
*/
public abstract double getMileage();
}

/* As you can see, in both classes, we have `getMileage` implemented
* with different formulas.
*/
public class Truck extends VehicleClass {
private double gasTankCapacity;
private double milesPerTank;

public Truck(double capacity, double miles) {
gasTankCapacity = capacity;
milesPerTank = miles;
}

public double getMileage() {
return milesPerTank/gasTankCapacity;
}
}

public class ElectricCar extends VehicleClass {
private double maxCharge;
private double milesPerCharge;
private double maxEnergyUsage;

public ElectricCar(double charge, double maxEnergy, double milesCharge) {
maxCharge = charge;
maxEnergyUsage = maxEnergy;
milesPerCharge = milesCharge;
}

public double getMileage() {
return (maxCharge*milesPerCharge)/maxEnergyUsage;
}
}

我的问题是:1.他为什么不使用super()来构建两个子类的构造函数? 。他不需要传递 type 和 vehicleName到父类(super class)的构造函数?2.他为什么要打字和vehicleName中超类为private ?我知道子类不能从父类(super class)继承实例变量。他为什么不使用保护呢?

最佳答案

  1. 你完全正确!该代码将无法编译。

  2. 如果不知道这些变量和类的用途,就很难说。

关于java - 关于构造一个不使用 super() 扩展抽象类构造函数的子类的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49604112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com