首先,我希望我的问题措辞足够好。如果没有,请随时对其进行编辑或提出更改建议。
我正在阅读 Java 教科书以帮助完成我的大学课程,并且遇到了一个练习,要求我创建一架abstract class
飞机,它具有三个子类 B747、B757 和 B767。这三个子类的每个对象都有一个唯一的序列号。
删除了问题的许多其他部分(我希望这不相关!),我这样做了:
public abstract class Airplane {
String serialNumber;
public String toString() {
return getClass().getName() + ": " + serialNumber
}
}
然后我声明了三个子类,每个子类如下所示:
public class B747 extends Airplane {
B747(String serial) {
serialNumber = serial;
}
}
最后,在我的主程序中,我使用以下代码实例化了新对象:
Airplane a = new B747("ABC101");
System.out.println ("Airplane a: " + a);
现在,代码工作正常。但是,当我查看书中的答案时,他们选择了不同的方式。他们以相同的方式实例化每个对象,但在每个类中都有以下方法:
public B747 (String serial) {
super (serial);
}
在抽象超类飞机中,他们有:
public Airplane (String serial) {
this.serial = serial;
}
这只是个人喜好问题,将 String 提升到超类并在那里对其进行操作,或者这是否提供任何好处,无论是安全性还是其他方面?