如何删除构造函数中的重复代码?

时间:2018-12-17 22:30:58

标签: java object constructor

我有以下代码;

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(“创建的动物:” +名称); 。有没有办法删除此重复的代码,因此它只能运行一次?拥有多个构造函数会让这有些痛苦。

3 个答案:

答案 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禁止使用相同参数的多个构造函数。

我希望这会有所帮助。.编码愉快!