【发布时间】:2018-02-05 22:30:53
【问题描述】:
背景:
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();
}
}
【问题讨论】:
-
这取决于,如果所有动物都有房子,以及狗是否可以住在
ElephantHouse或类似的地方...因此,我们对您想要实现的目标知之甚少。 -
嗨,朱利安。您的问题没有正确答案;它主要是基于意见的。因此,对于 Stack Overflow,它是 off-topic。
-
是的。这里假设所有动物都有房子。每只动物只会住在它特定的房子里。我只是想问一下这个变量放在哪个地方(抽象类还是子类)比较好。
-
请将此信息添加到您的问题中(编辑),不要在 cmets 中提供。
标签: java class variables interface abstract