我有以下代码;
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(“创建的动物:” +名称); 。有没有办法删除此重复的代码,因此它只能运行一次?拥有多个构造函数会让这有些痛苦。
答案 0 :(得分:6)
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参数构造函数。
答案 1 :(得分:3)
在仅使用名称的构造函数中,通过调用将其委托给其他构造函数
public Animal(String name){
this(name, 4);
}
这将委托给另一个构造函数,这样就不会重复任何代码。这不仅将只有一行代码调用System.out.println
,还将只有一行代码分配给name
,只有一行代码分配给legCount
。
答案 2 :(得分:-1)
问题已经回答:
将所有构造函数简单地链接到一个最终将执行命令的构造函数。但是,值得注意的一件事是确保所有构造函数都不具有相同的{{3 }}。这个非常重要!如果一个构造函数接受两个String参数,则不应有其他构造函数接受两个String。 Java禁止使用相同参数的多个构造函数。
我希望这会有所帮助。.编码愉快!