为了账号安全,请及时绑定邮箱和手机立即绑定

子类中的 getter 和 setter

子类中的 getter 和 setter

素胚勾勒不出你 2021-11-17 15:40:07
我只是在学习编程中的继承,我想知道您是否应该为每个子类中的实例变量编写覆盖的 getter 和 setter,或者您是否只使用从抽象父类中继承的那个。为每个子类中的继承变量编写 getter 和 setter 是不是很糟糕的代码?
查看完整描述

2 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

是的,如果您不需要子类中的特殊行为,它会这样做。


认为:


class A {

   private String val;

   public String getVal() { return this.val }

   public void setVal(String newValue) { this.val = newValue }

}

class B extends A {

   // you already have access to getVal & setVal here, so it's useless to override them here

}

class C extends A {

   private String valCopy;


   @Override

   public void setVal(String newValue) {

      super(newValue);

      this.valCopy = newValue

      // new behavior so here it's ok to override

   }

}


查看完整回答
反对 回复 2021-11-17
?
慕神8447489

TA贡献1780条经验 获得超1个赞

假设我们有一个通用类 Number 可以接受任何数值,但我们想使用 Number 类实现两个不同的类,例如 PositiveNumber 和 NegativeNumber,我们可以重写 setter 方法并强制数字集始终为正数或负数,具体取决于被覆盖的类。


public class Number {

    private int num;


    public int getNum() {

        return num;

    }


    public void setNum(int num) {

        this.num = num;

    }

}


public class PositiveNumber extends Number {


    @Override

    public void setNum(int num) {

        super.setNum(num > 0 ? num : -num);

    }


}


public class NegativeNumber extends Number {


    @Override

    public void setNum(int num) {

        super.setNum(num > 0 ? -num : num);

    }


}


查看完整回答
反对 回复 2021-11-17
  • 2 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信