0

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

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

还有一个像这样的子类:

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

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

4

2 回答 2

6

如果构造函数相同,则不需要在Dog. 您可以通过调用来访问Animal构造函数。Dogsuper(name);

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

在狗中:

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

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

例如:

public class Dog {
    Dog(String name) {
        // You can't put any code here
        super(name);
        // But you can put other code here
    }
}
于 2013-10-01T01:45:23.213 回答
3

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

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

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

于 2013-10-01T01:44:20.857 回答