这个问题在这里已有答案:
我有以下代码;
abstract class Animal{
public String name;
public int legCount;
//If has no leg count
public Animal(String name){
this.name = name;
this.legCount = 4; //Default leg count is 4
System.out.println("Created animal: " + name);
}
//If has a leg count
public Animal(String name, int legCount){
this.name = name;
this.legCount = legCount;
System.out.println("Created animal: " + name);
}}
我重复了System.out.println(“Created animal:”+ name);两次。有没有办法删除这个重复的代码,所以它只运行一次?拥有多个构造函数可能会让这有点痛苦。
class Animal{
public String name;
public int legCount;
public Animal(String name){
this(name,4);
}
public Animal(String name, int legCount){
this.name = name;
this.legCount = legCount;
System.out.println("Created animal: " + name);
}
}
现在你只重复一次印刷线
1参数构造函数使用默认值4调用2参数构造函数。
在只接受名称的构造函数中,让它通过调用委托给另一个构造函数:
public Animal(String name){
this(name, 4);
}
这将委托给其他构造函数,以便不重复任何代码。这将不仅只有一行代码调用System.out.println
,它也只有一行代码分配给name
,只有一行代码分配给legCount
。
问题已经回答:
只需将所有构造函数链接到一个最终将执行命令的构造函数。然而,值得注意的一件事是确保没有任何构造函数具有相同的signature。这是非常重要的!如果一个构造函数接受两个String参数,则不应该有其他构造函数接受两个字符串。 Java禁止具有相同参数的多个构造函数。
我希望这有帮助..快乐编码!