2个子类中相同的getter和setter ..?

时间:2013-02-19 13:47:03

标签: java oop inheritance

我不是那么好的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;
   }

    }

谢谢..

2 个答案:

答案 0 :(得分:2)

这取决于班级

如果这些属性是A的属性,那么是, 如果它只是偶然的机会,那么就没有。

基本上你需要问自己的问题是,是否会有一个扩展A的类不需要这些属性。

如果答案是否定的,请将它们放在A上,

如果答案是肯定的,请将它们留在子类上, 或者在这两个子类之间创建另一个抽象类,具有这两个属性。

答案 1 :(得分:1)

假设您的课程为A(父母),BC(孩子)。您说BC有一些相同的字段。

问问自己:如果你有另一个班级DA的孩子,那么无论其具体功能如何,它都会有这些字段吗?

  • 如果答案是肯定的,那么两个子类中这些字段的存在绝对不是巧合,所以你应该在A中定义它们,因为这意味着它们具有这些成员正是因为他们继承自A

  • 如果答案为否,则子类中这些字段的存在可能是也可能不是巧合。所以,你应该问自己:即使D没有这些字段,它们在BC中的存在看起来不仅仅是巧合吗?这些类是否共享DA的另一个孩子,并不偶然分享?

    • 如果是,请考虑扩展E的新课程AE定义这些常见成员,然后制作B和{{1} } C的孩子而不是E

    • 如果没有(如果它看起来只是巧合),那么保持你的结构不变。或者考虑使用界面。