可能是比较基础的问题,但是我搜了一圈确实不知道该怎么做··请大家指教!
是这样的需求:
假设我们有一个类:
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
类传参,应该怎么做?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
要实现您的需求,即让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
类对象作为参数的需求。