Java 抽象方法和扩展方法中的构造函数

Java 抽象方法和扩展方法中的构造函数,java,constructor,Java,Constructor,关于JAVA中不同类中的构造函数的几个基本问题: 什么时候应该在类中添加空构造函数 什么时候应该在抽象类中添加构造函数 我应该在什么时候在扩展类中添加“超级”构造函数 空构造函数隐式存在。但是,如果您添加了其他构造函数,并且仍然需要默认构造函数,请显式添加它。另一个原因是,如果要控制构造函数访问修饰符。隐式默认构造函数是公共的 构造函数创建对象。如果您想创建保存某些状态的即用对象,通常必须编写构造函数。在这种情况下,类是否抽象并不重要 我相信您的意思是当您必须从子类显式调用超类的构造函数时。除非

关于JAVA中不同类中的构造函数的几个基本问题:

  • 什么时候应该在类中添加空构造函数
  • 什么时候应该在抽象类中添加构造函数
  • 我应该在什么时候在扩展类中添加“超级”构造函数
  • 空构造函数隐式存在。但是,如果您添加了其他构造函数,并且仍然需要默认构造函数,请显式添加它。另一个原因是,如果要控制构造函数访问修饰符。隐式默认构造函数是公共的
  • 构造函数创建对象。如果您想创建保存某些状态的即用对象,通常必须编写构造函数。在这种情况下,类是否抽象并不重要
  • 我相信您的意思是当您必须从子类显式调用超类的构造函数时。除非您想调用超类的非默认构造函数,否则必须这样做。我建议始终显式调用超类的构造函数。这样的代码在将来修改时更安全
  • 空构造函数是自动生成的,但仅当类没有带参数的构造函数时才生成。所以,如果您有一个带参数的构造函数,并且希望有一个空构造函数,那么您必须自己编写一个
  • 最常见的情况是在抽象类中有一些私有/受保护的字段。 例如,如果抽象类Person有字段name、姓氏,它应该有初始化这两个字段的构造函数。若类Student扩展类Person,它应该调用Person构造函数
  • 自动调用父类默认构造函数(不带参数)。如果要使用参数调用父构造函数,请使用super
  • 如果您需要显式默认构造函数,而隐式默认构造函数不可用
  • 这个类有一些子类
  • 调用超类的非默认构造函数

  • 这个问题在这里是离题的,因为它太宽泛了。这个问题要求的是Java教科书中的一章(比如)而不是特定问题的答案。
    只有当类是public时,隐式默认构造函数才是public。换句话说,默认构造函数的可见性修饰符和类的可见性相同。