我知道在派生的Java类中,可以将超级构造函数称为子构造函数中的第一个命令。例如,Python在这种情况下允许在调用超级构造函数之前执行一些自定义逻辑。
我的问题是:在Java中有没有办法实现这一点,在调用超级构造函数之前调用一些命令?如果没有,那么一般来说这样做的“Java方式”是什么?
示例用例:我正在编写游戏,在子类构造函数中,我需要加载一些资源(仅用于该子类,而不是静态),并将它们传递给父构造函数。
答案 0 :(得分:3)
您可以在调用super()中调用静态方法(例如super(initSomething());如果该方法是静态的)。
但是,如果你的逻辑过于复杂,最好使用一个静态工厂方法,然后在调用(私有)构造函数之前可以进行一些自定义初始化。
答案 1 :(得分:-1)
调用超类构造函数必须是子类构造函数中的第一行。
取自here。所以,在你按照你提出的方式调用超级类的构造函数之前,不能执行逻辑。