Java抽象类:受保护的字段或公共set / get方法

domdomcodecode

如果我打算从中创建子类,那么最好是对抽象类中的字段进行保护,或者让子类使用setter和getter代替呢?有什么利弊吗?

例如:

public abstract class MyAbstractClass {
    // option A
    protected int myProtectedInt;

    // option B
    private int myPrivateInt;
    public void setMyPrivateInt() {}
    public int getMyPrivateInt() {}
}

public class MySubClass extends MyAbstractClass {
    // etc
}
血y

好吧,这在某种程度上是主观的(取决于场景)和部分的偏好。我个人从来没有向儿童班开放过领域。在过去,偏爱使用受保护的(或公共,如果需要的)吸气剂和吸气剂的私人领域对我有很大帮助。虽然它在代码中增加了一些字符,并使代码看起来不太直观,但我可以列举一些我偏爱的方法的优点,这些方法可能会说服您开始使用带有私有字段的getter / setter方法:

  1. 更好的控制:父类确切知道更改的内容和访问的内容。他们不必使用子类(或大子类)直接修改字段,而必须使用设置器,从而使父类具有一天可能会用到的可视性

  2. 更好的灵活性:父类可以灵活地更改字段的维护方式,可能的计算方式,甚至可以显着重构,而无需保留任何子类,只要保留getter / setter的签名即可。

  3. 记录,数据访问和验证:getter / setter方法可以具有编程逻辑来记录或检查数据类型,或者在访问或修改之前或之后执行验证。您可能可以添加业务逻辑,以确保呼叫者有权访问或写入字段。

  4. 更好的描述:方法可以更好地记录(方法的JavaDocs可以比成员变量具有更多的解释性)

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

公共与受保护的抽象类方法

来自分类Dev

抽象类中受保护的抽象或公共抽象方法

来自分类Dev

抽象类受保护的方法junit测试用例

来自分类Dev

phpunit中具有受保护方法的抽象类

来自分类Dev

PHP抽象类和受保护的方法

来自分类Dev

抽象类-为什么我的受保护方法可以公开访问?

来自分类Dev

如何通过 ScalaMock 用受保护的抽象方法存根抽象 java 类?

来自分类Dev

Java抽象类通用方法参数

来自分类Dev

如何实现抽象类的方法?(Java)

来自分类Dev

Java抽象类通用方法参数

来自分类Dev

在抽象类java中调用非抽象方法

来自分类Dev

java中抽象类中的抽象方法

来自分类Dev

在继承的类中受保护的公共虚拟方法被重写

来自分类Dev

公共抽象类中实现内部接口的抽象方法无法编译?

来自分类Dev

Java:仅打算覆盖的库方法的受保护或公共访问?

来自分类Dev

从抽象类继承方法

来自分类Dev

Java:通过Main方法进行抽象类调用

来自分类Dev

Google Go中等效的抽象类/方法(Java)

来自分类Dev

在Java中为抽象类创建方法

来自分类Dev

扩展Java中抽象类的重写方法

来自分类Dev

Java ArrayList,返回抽象类的ArrayList的访问方法

来自分类Dev

使用抽象类中的重写方法(Java)

来自分类Dev

接口,抽象类或其他方法java

来自分类Dev

Java实例vs抽象类和方法

来自分类Dev

以接口为参数的Java覆盖抽象类方法

来自分类Dev

Java-从抽象类的子级中调用方法

来自分类Dev

在Java中为抽象类创建方法

来自分类Dev

使用Java泛型接口/抽象类的构造方法

来自分类Dev

构造函数和抽象类中的java调用方法?