Java 抽象类变量和子类变量,哪个更好
背景:Java 抽象类变量和子类变量,哪个更好,java,class,variables,interface,abstract,Java,Class,Variables,Interface,Abstract,背景: Abstract class Animal { void sleep () { //implementation details.... } abstract void bark(); }; Class Dog extends Animal {}; Class Cat extends Animal {}; Interface House {...}; Class DogHouse implements House { ...}; Class CatHouse implem
Abstract class Animal {
void sleep () { //implementation details.... }
abstract void bark();
};
Class Dog extends Animal {};
Class Cat extends Animal {};
Interface House {...};
Class DogHouse implements House { ...};
Class CatHouse implements House { ...};
这里假设所有动物都有房子。每只动物只会生活在它特定的房子里。我只是想问一下,哪个位置(抽象类或子类)更适合放置这个变量
问题:
Abstract class Animal {
void sleep () { //implementation details.... }
abstract void bark();
};
Class Dog extends Animal {};
Class Cat extends Animal {};
Interface House {...};
Class DogHouse implements House { ...};
Class CatHouse implements House { ...};
如果我想为Dog类添加DogHouse变量,下面哪个选项是最好的
==选项1====
public Class Dog extends Animal {
DogHouse dogHouse = new DogHouse();
...
}
==选项2====
public Class Dog extends Animal{
House house = new DogHouse();
....
}
==选项3====
Abstract class Animal {
House House;
void sleep () {... }
abstract void bark();
}
public Class Dog extends Animal{
Dog() {
house = new DogHouse();
}
}
这取决于你计划如何模拟你的情况。以下是一些建议:
house
属性是有意义的。这确保了该属性可用于所有子类,而不管它是哪个房屋。这适用于您描述的模型Dog
中的DogHouse
总之,你的选择3会更合适 这取决于,如果所有的动物都有房子,如果一只狗可以住在一个象形寓所或类似的地方。。。因此,我们对你想要达到的目标知之甚少。嗨,朱利安。你的问题没有正确的答案;它主要是基于意见的。因此,它用于堆栈溢出。是。这里假设所有动物都有房子。每只动物只会生活在它特定的房子里。我只想问哪个位置(抽象类或子类)更适合放置此变量。请将此信息添加到您的问题(编辑),不要在注释中提供。