什么可以是从构造函数调用super()的实际示例?

Fre*_*her -2 java oop super

我们知道可以从子类的构造函数中调用父类的构造函数.它可以通过调用super来完成,super应该是构造函数的第一个语句.

它是否只是为了增加OOP概念的特征数量而保留的功能还是有任何实际应用?

如果有任何实际应用,请说明.

在回答之前,请看一下这里:

我要求实际应用.这意味着一个现实生活场景,使用此功能非常有用,而不是以其他方式完成工作.

每个人都只是发布概念或代码如何工作.但我已经知道了.我只想要一个实际的场景,它可以让我免于编写大量代码或者无法做其他代码.

T.J*_*der 5

假设父类需要构造函数参数,但子类不需要,因为它将提供该参数.您将明确地进行调用以提供参数.

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)