Java 具有默认值的构造函数

Java constructor with default values

感谢阅读。

我需要创建构造函数,在一种情况下,它具有下面的默认值示例。 这段代码当然是错误的,是否可以这样做,这意味着万一“狗”构造函数不会要求参数:体重、年龄并将填充 class 字段:体重=1、年龄=1。 在另一种情况下,例如 cat 会询问所有参数吗?通常如何解决这个问题?

public Animal(String spacies, String name, double weight, byte age, boolean isALive){

    if (spacies.equals("dog")) {

        this.name = name;
        this.weight= 1;
        this.age = 1;
        this.isALive = isALive;

    } else {
        this.spacies = spacies;
        this.name = name;
        this.weight = weight;
        this.age = age;
        this.isALive = isALive;
    }
}

创建第二个构造函数来设置这些值

public Animal(String spacies, String name, boolean isALive){
    this("dog", name, 1, 1, true)
}

最好的方法是使用继承。动物是抽象实体。你应该从中衍生出特定的动物。 可以有不同的方法。试图提供一种简单的解决方案。

    public abstract class Animal {


    private final String species;
    private final String name;
    private final double weight;
    private final byte age;
    private final boolean isALive;

    public Animal(String species, String name, double weight, byte age, boolean isAlive) {
        this.species = species;
        this.name = name;
        this.weight = weight;
        this.age = age;
        this.isALive = isAlive;
    }

}

class Dog extends Animal {
    public Dog(String dogName, boolean isAlive) {
        super("Dog", dogName, 1.0, (byte) 1,isAlive);
    }
}

在处理 OOPS 概念时尝试与现实世界相关联。