Java编译器在许多情况下生成构造函数并注入超级构造函数调用。
例如,
class Foo {
Foo() {}
}
变为
class Foo {
Foo() {
super();
}
}
我并不热衷于不同的情况,我想让代码明确。
如果可能,如何禁用Java编译器呢?
答案 0 :(得分:1)
你无法禁止Java编译器调用super - 这是在Java中设计面向对象的核心原则之一。
但可能能够告诉IDE始终显示这些调用(或不显示)。
然而我建议坚持使用标准 - 每个Java开发人员都知道它,并且看起来有些奇怪和不熟悉的东西现在将在短时间后变得完全合理...... :)
答案 1 :(得分:0)
默认构造函数。如果您没有为类定义构造函数,则编译器会自动创建默认的无参数构造函数。默认构造函数调用默认的父构造函数(super())并将所有实例变量初始化为默认值(数值类型为零,对象引用为null,布尔值为false)。
只有在没有构造函数的情况下才会创建默认构造函数。如果为类定义任何构造函数,则不会自动创建默认构造函数。
任何子类构造函数中的第一个语句都是ALWAYS super()。没有必要调用它,因为如果超类具有没有params的默认构造函数,它将自动提供。
如果父类没有默认构造函数,则必须添加super(params)调用。
如果没有明确扩展任何类
,请记住所有类都会隐式扩展Object