什么是默认的构造函数头

时间:2016-10-09 14:56:49

标签: java

我是java新手并试图掌握有关默认构造函数头的概念。

Circle中第一个构造函数的标题是:

public Circle(String label, int radius)

如果有人决定将默认构造函数添加到类中。这个默认构造函数的标题是什么?

我看过网上但没有真正看到简洁的答案。

2 个答案:

答案 0 :(得分:2)

  

如果有人决定将默认构造函数添加到类中。

不决定添加默认构造函数。如果您根本没有指定任何构造函数,编译器会为您添加一个。

它添加的那个由JLS§8.8.9定义:

  

如果类不包含构造函数声明,则隐式声明默认构造函数。顶级类,成员类或本地类的默认构造函数的形式如下:

     
      
  • 默认构造函数与类具有相同的可访问性(第6.6节)。

  •   
  • 默认构造函数没有形式参数,除非在非私有内部成员类中,默认构造函数隐式声明一个形式参数,表示该类的直接封闭实例(§8.8.1,§15.9。 2,§15.9.3)。

  •   
  • 默认构造函数没有throws子句。

  •   
  • 如果声明的类是原始类Object,则默认构造函数具有空体。否则,默认构造函数只调用不带参数的超类构造函数。

  •   

因此,如果Circle是公开的,那么默认的签名将是:

public Circle()
例如,完整生成的版本是:

public Circle() {
    super();
}

答案 1 :(得分:0)

请记住,只有在另一个构造函数不存在的情况下才会添加默认构造函数。因此,如果类包含 public Circle(String label,int radius) ,则编译器不会添加任何默认构造函数。如果需要,您必须自己显式添加此构造函数。