我们是否必须从其子类中的Object类调用默认构造函数

时间:2014-03-26 19:13:36

标签: java object constructor

如果我在类中调用Object的默认构造函数,是否有任何区别:

public class BankCustomer {
    private Person owner;

    public BankCustomer(Person owner) {
        this.owner = owner;
    }
}

OR

public class BankCustomer {
    private Person owner;

    public BankCustomer(Person owner) {
        super();
        this.owner = owner;
    }

}

1 个答案:

答案 0 :(得分:4)

没有区别。如果没有显式调用超类构造函数,那么Java将对默认超类构造函数的隐式调用作为构造函数中的第一个语句插入。

JLS, Section 8.8.7州:

  

如果构造函数体不是以显式构造函数调用开始并且声明的构造函数不是原始类Object的一部分,那么构造函数体隐式地以超类构造函数调用开始" super();&# 34;,调用其直接超类的构造函数,不带参数。

在你的情况下,完全没必要。虽然留下super();没有任何害处,但我会删除它。