我不是那么好的OO设计..所以请耐心等待..
我有A类和2个扩展A的类。但是它们都有相同的字段..那么更好的是,在A中使用getter / setter或在两个子类中使用相同的getter / setter ..或者有没有更好的方法来做到这一点..?
这就是我所做的(模拟)..
class A{
private int x;
protected A(int x){
this.x = x;
}
public static A createA(id a, int x){
switch(a){
case 0:
return new C(x);
break;
//so on
}
public int getX(){
return x;
}
}
谢谢..
答案 0 :(得分:2)
这取决于班级
如果这些属性是A的属性,那么是, 如果它只是偶然的机会,那么就没有。
基本上你需要问自己的问题是,是否会有一个扩展A的类不需要这些属性。
如果答案是否定的,请将它们放在A上,
如果答案是肯定的,请将它们留在子类上, 或者在这两个子类之间创建另一个抽象类,具有这两个属性。
答案 1 :(得分:1)
假设您的课程为A
(父母),B
和C
(孩子)。您说B
和C
有一些相同的字段。
问问自己:如果你有另一个班级D
,A
的孩子,那么无论其具体功能如何,它都会有这些字段吗?
如果答案是肯定的,那么两个子类中这些字段的存在绝对不是巧合,所以你应该在A
中定义它们,因为这意味着它们具有这些成员正是因为他们继承自A
。
如果答案为否,则子类中这些字段的存在可能是也可能不是巧合。所以,你应该问自己:即使D
没有这些字段,它们在B
和C
中的存在看起来不仅仅是巧合吗?这些类是否共享D
,A
的另一个孩子,并不偶然分享?
如果是,请考虑扩展E
的新课程A
,E
定义这些常见成员,然后制作B
和{{1} } C
的孩子而不是E
。
如果没有(如果它看起来只是巧合),那么保持你的结构不变。或者考虑使用界面。