开发者社区 问答 正文

java里边想要设置一个属性可以接受一个对象及其子类应该怎么写?

可能是比较基础的问题,但是我搜了一圈确实不知道该怎么做··请大家指教!

是这样的需求:

假设我们有一个类:

public class Zoo{
	private Animal animal;
	private Long age;
}

其中 Animal的实现如下

public class Animal{
    private String name;
}

然后现在有了新的需求:产生了Dog

public class Dog extends Node{
    private String dogClass;
}

我想要让Zoo里边的animal属性也可以接受Dog类传参,应该怎么做?

展开
收起
1020371570733451 2022-01-10 15:11:16 724 分享 版权
阿里云 AI 助理回答

要实现您的需求,即让Zoo类中的animal属性能够接受Dog类作为参数,您需要调整Zoo类中animal的声明,使其使用Animal类的父类型。由于Dog类已经继承自Animal(这里假设您的描述中extends Node应为笔误,正确应为extends Animal),这样的修改将直接支持Dog实例作为参数传递给animal。以下是修改后的代码示例:

public class Zoo{
    // 修改animal的类型为Animal,这样任何Animal及其子类(如Dog)的实例都可以被赋值给它
    private Animal animal;
    private Long age;

    // 构造方法或setter方法中也可以接受Animal或者其子类的实例
    public Zoo(Animal animal, Long age) {
        this.animal = animal;
        this.age = age;
    }

    // 其他相关方法...
}

// 确保Dog类正确继承自Animal
public class Dog extends Animal{
    private String dogClass;

    // Dog类的构造方法和其他方法...
}

public class Animal{
    private String name;

    // Animal类的构造方法和其他方法...
}

通过上述修改,现在您可以创建一个Dog实例并将其赋值给Zoo类中的animal属性,如下所示:

Dog myDog = new Dog("小黄", "金毛");
Zoo myZoo = new Zoo(myDog, 2L);

这样就实现了您希望Zoo类的animal属性能够接受Dog类对象作为参数的需求。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答