2013-10-01 166 views
0

我有Java代码看起来是这样的:避免重复代码

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

而且一个子类是这样的:

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

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

回答

6

如果构造函数相同,您不需要它在Dog。您可以致电super(name);Dog访问Animal的构造函数。

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 
    } 
}