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

问题描述 投票:3回答:3

这个问题在这里已有答案:

我有以下代码;

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);两次。有没有办法删除这个重复的代码,所以它只运行一次?拥有多个构造函数可能会让这有点痛苦。

java object constructor
3个回答
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参数构造函数。


3
投票

在只接受名称的构造函数中,让它通过调用委托给另一个构造函数:

public Animal(String name){
    this(name, 4);
}

这将委托给其他构造函数,以便不重复任何代码。这将不仅只有一行代码调用System.out.println,它也只有一行代码分配给name,只有一行代码分配给legCount


-1
投票

问题已经回答:

只需将所有构造函数链接到一个最终将执行命令的构造函数。然而,值得注意的一件事是确保没有任何构造函数具有相同的signature。这是非常重要的!如果一个构造函数接受两个String参数,则不应该有其他构造函数接受两个字符串。 Java禁止具有相同参数的多个构造函数。

我希望这有帮助..快乐编码!

© www.soinside.com 2019 - 2024. All rights reserved.