据我所知:当创建子类时,所有构造函数都会隐式或显式调用 super()。
示例:
class subclass extends superclass { public subclass() { super(); // unnecessary, but explicit }
我如何知道 super() 何时完成?我正在创建一个需要自动调整列的 JTable 子类,但只能在 super() 完成后才能安全地执行此操作。
-- 编辑--
为了根据下面的注释进行澄清,假设 super() 还将调用一些类方法。我可以在我的子类中重写其中一些方法。我想在基类构造期间修改这些方法中的行为。也许某些必需的成员尚未(完全)初始化......
最佳答案
当对 super()
的调用返回时,
super()
完成(这同样适用于任何其他方法调用)。
如果您按照示例显式调用它,则当到达 super()
调用之后的行时,super()
已完成执行。如果您允许隐式调用它,则当执行到达构造函数中的第一行时,super()
已完成。
当然,有可能是 super()
生成一个或多个后台线程,这些线程执行各种任务,并且在调用 super( )
返回。但这实际上与对 super() 的调用无关。在这种情况下,其他任务完成的时间与 super()
调用完成的时间没有任何关系。
关于java - 在Java中,我们如何知道构造函数中的super()何时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7871275/