我们知道可以从子类的构造函数中调用父类的构造函数.它可以通过调用super来完成,super应该是构造函数的第一个语句.
它是否只是为了增加OOP概念的特征数量而保留的功能还是有任何实际应用?
如果有任何实际应用,请说明.
我要求实际应用.这意味着一个现实生活场景,使用此功能非常有用,而不是以其他方式完成工作.
每个人都只是发布概念或代码如何工作.但我已经知道了.我只想要一个实际的场景,它可以让我免于编写大量代码或者无法做其他代码.
假设父类需要构造函数参数,但子类不需要,因为它将提供该参数.您将明确地进行调用以提供参数.
class Vehicle {
private VehicleType type;
Vehicle(VehicleType t) {
this.type = t;
}
}
class Car extends Vehicle {
Car() {
super(VehicleType.Car);
}
}
Run Code Online (Sandbox Code Playgroud)
这只是一个例子.另一个可能是如果父类的构造函数可能抛出异常,并且子类想要抛出更一般的异常(可能隐藏内部细节,也许父类不公开):
class Parent {
Parent() throws InternalException {
// ...
}
}
public class Child extends Parent {
Child() throws PublicException {
try {
super();
} catch (InternalException e) {
throw new PublicException();
}
}
}
Run Code Online (Sandbox Code Playgroud)