Java 构造函数继承:为什么不呢?
与其他面向对象语言不同,Java 不继承构造函数。当子类继承超类时,它不会自动获取超类的构造函数。相反,子类必须显式定义自己的构造函数,使用 super 关键字调用适当的超类构造函数。
为什么 Java 中没有构造函数继承?
主要原因这种设计选择是为了保持构造函数的封装性。如果构造函数是继承的,那么由于继承自 Object 类,每个类最终都会有一个无参数构造函数。这会导致歧义和潜在的安全问题。
例如,如果 FileInputStream 有一个无参数构造函数,则以下代码将会有问题:
FileInputStream stream = new FileInputStream();
流将打开到哪个文件?通过要求子类显式定义自己的构造函数来指定必要的参数,可以消除这种歧义。
显式构造函数的好处
此设计决策还提供了几个好处:
以上是Java构造函数继承:为什么Java不继承构造函数?的详细内容。更多信息请关注PHP中文网其他相关文章!