避免在构造函数中重复代码

时间:2013-10-01 01:42:44

标签: java constructor

我的Java代码看起来像这样:

public class Animal {
    Animal(String name) {
    // some code
    }
}

这样的子类:

public class Dog extends Animal {
    Dog(String name) {
    // SAME code as Animal constructor
    }
}

Dog和the Animal之间的唯一区别是Dog有一些覆盖超类的方法。他们的构造函数具有完全相同的代码。我怎样才能避免这个重复的代码?我知道对象不能继承构造函数。

2 个答案:

答案 0 :(得分:6)

如果构造函数相同,则Dog中不需要它。您可以通过调用AnimalDog访问super(name);构造函数。

public class Animal {
    Animal(String name) {
    // some code
    }
}

在Dog:

public class Dog {
    Dog(String name) {
        super(name);
    }
}

值得注意的是,对超类构造函数的调用必须是构造函数中的第一行。但是在你打电话给super(name)后,你可以继续做其他特定于狗的代码。

例如:

public class Dog {
    Dog(String name) {
        // You can't put any code here
        super(name);
        // But you can put other code here
    }
}

答案 1 :(得分:3)

您可以委托超级构造函数:

Dog(String name) {
    super(name);
}

另请参阅:http://docs.oracle.com/javase/tutorial/java/IandI/super.html