在子类中实现Setter / Getters的最佳实践?

时间:2016-10-09 06:19:08

标签: java inheritance methods getter-setter

如果我有一个必须保留一些功能的超类,因此需要setter / getters(我意识到这不是理想的,但这不是重点),当我实现一个子类时,我应该包括打电话给超级班级'尽管我可以在技术上调用它们而无需再次编写代码,但是子类中的setter / getters?

我在下面发布了一个我的意思的例子。

Users

4 个答案:

答案 0 :(得分:3)

继承的全部要点是,如果超类方法满足您的需要,则不必在子类中重新实现方法。仅当子类方法需要执行不同/更多的操作时,才应覆盖。

答案 1 :(得分:1)

  

我应该在子类

中包含对超类'setter / getters的调用

首先,如果您希望孩子有权访问private int x,请将私人更改为受保护。

我能想到何时返回/设置不同数据的唯一原因是,例如,子类在设置y之前在x上执行了一些额外的计算。否则,如果您只是委托super方法,那么该定义是不必要的。

答案 2 :(得分:1)

覆盖只调用超级版本的方法是默认情况下不会覆盖的方法!

换句话说:

@Override
void foo() { super.foo(); }

结果绝对与行为相同......根本不会覆盖该方法。

所以,恰恰相反:你应该考虑让那些getter和setter final 来阻止子类覆盖它们!并且为了记录:当重写方法时,总是想要在这些方法上放置@Override注释(因此编译器可以告诉您何时只是认为你正在覆盖一个方法法)。

答案 3 :(得分:0)

如果需要专门从父对象访问私有字段,请使用超类访问器。如果在子类中定义了不同的实例字段,则需要单独的getter来访问这些字段/变量。

否则,只需使用预定义的超级方法,这些方法由扩展父类的所有类继承。