我是 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)继承实例变量。他为什么不使用保护呢?
最佳答案
你完全正确!该代码将无法编译。
如果不知道这些变量和类的用途,就很难说。
关于java - 关于构造一个不使用 super() 扩展抽象类构造函数的子类的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49604112/