假设我有一个子类,继承自一个超类。在哪些情况下需要显式使用 super()
来运行超类构造函数呢?
我正在研究一本关于抽象类的书中的示例,当它们用非抽象的子类扩展时,子类的默认构造函数为空,并且有一个注释说将调用超类的默认构造函数。同时,在这里我也看到过有人的问题是没有显式调用 super()
。
是否区别于从子类的默认/非默认构造函数中调用超类的默认/非默认构造函数?
假设我有一个子类,继承自一个超类。在哪些情况下需要显式使用 super()
来运行超类构造函数呢?
我正在研究一本关于抽象类的书中的示例,当它们用非抽象的子类扩展时,子类的默认构造函数为空,并且有一个注释说将调用超类的默认构造函数。同时,在这里我也看到过有人的问题是没有显式调用 super()
。
是否区别于从子类的默认/非默认构造函数中调用超类的默认/非默认构造函数?
你从来不需要只是
super();
如果你不指定其他内容,那将会有这样的情况。如果:
您声称:
与此同时,在这里我也见过某些例子,其中有人的问题并没有明确调用 super()。
你能给出任何例子吗?我无法想象这是怎么可能的...
super()
也不起作用。调用带有非空参数列表的超级构造函数会起作用,但仅使用 super()
不会起作用。 - Jon Skeetsuper()
。每当我看到它们时,我几乎是机械地将其删除。然而,我不禁想知道它们存在的原因。您能否想到一种情况,在这种情况下,您实际上需要这些无参数的构造函数呢? - patriksuper(...)
方法。