在 Java 中,类的构造函数不会被其子类继承。这种设计选择引发了一个长期存在的问题:为什么 Java 采取这种方法?
考虑以下类:
当子类 Son 继承自 Super 时,Java 要求构造函数在 Son 中显式声明,其参数与 Super 中的参数相同。这可能会导致代码重复,如下所示:
这种重复提示了一个问题:为什么 Java 禁止构造函数的继承?
答案在于这种行为的潜在后果遗产。如果构造函数是继承的,那么每个类最终都会从基类 Object 继承一个构造函数。这意味着每个类,无论其用途如何,都将有一个无参数构造函数。
这样的设计会产生歧义。例如,以下代码:
会留下问题,应该将哪些参数传递给构造函数。不同的类可能需要不同的参数,使得这种继承非常不切实际。
虽然在某些情况下传递构造函数(仅调用超类构造函数的构造函数)很有用,但 Java 明智地选择不将此作为默认行为。子类构造所需的不同参数需要在每个类中显式声明构造函数。
以上是为什么Java不继承构造函数?的详细内容。更多信息请关注PHP中文网其他相关文章!