关于Java中不同类中构造函数的一些基础问题[已关闭]

问题描述 投票:0回答:3

关于不同类中构造函数的一些基本问题:

  1. 我什么时候应该在类中添加空构造函数?
  2. 什么时候应该在抽象类中添加构造函数?
  3. 我什么时候应该在扩展类中添加“超级”构造函数?
java constructor
3个回答
1
投票
  1. 空构造函数会自动生成,但前提是类没有带参数的构造函数。所以,如果你有一个带参数的构造函数,并且你想有一个空的构造函数,你必须自己写一个。
  2. 最常见的情况是抽象类中有一些私有/受保护的字段。 例如,如果抽象类 Person 有字段 name、surname,它应该有初始化这 2 个字段的构造函数。如果 Student 类扩展了 Person 类,它应该调用 Person 构造函数。
  3. 自动调用父类默认构造函数(不带参数)。如果你想带参数调用父构造函数,请使用 super。

0
投票
  1. 空构造函数隐式存在。但是,如果您添加了其他构造函数并且仍然需要默认构造函数,请显式添加它。其他原因是如果您想控制构造函数访问修饰符。隐式默认构造函数是公共的。
  2. 构造函数创建对象。如果您想创建保存某种状态的即用对象,您通常必须编写构造函数代码。在这种情况下,类是否抽象并不重要。
  3. 我相信你的意思是当你必须从子类显式调用超类的构造函数时。除非您不想调用超类的默认构造函数,否则您必须这样做。我建议始终显式调用超类的构造函数。这样的代码对于将来的修改来说更安全。

0
投票
  1. 如果需要显式默认构造函数,则隐式默认构造函数不可用。
  2. 该类还有子类。
  3. 调用超类的非默认构造函数。
© www.soinside.com 2019 - 2024. All rights reserved.