java - 通过访问方法引用属性还是直接在父类(super class)中引用属性?

标签 java theory

如果存在访问方法(获取/设置),直接引用字段属性是否不好?

此外,在处理 JComponent 时,早期的考试会在构造函数中初始化字段属性,而我认为没有理由不能在类字段中初始化它。这样做有充分的理由吗?还是我可以自由选择?

最佳答案

为私有(private)字段创建 getter 和 setter 有助于隐藏类的内部实现。这意味着您可以更改内部表示,而无需更改其他类的外部接口(interface)。

例如,如果您有一个自定义类,它实现类似于值序列的数据结构。第一个实现可以使用值数组。

添加一些新功能,您可以决定将值的内部表示从数组更改为列表。

这是一个例子。

使用数组的原始代码:

public class MySequence {
    private Object[] values;

    public Object[] getValues() {
        return values;
    }

    public void setValues(Object[] values) {
        this.values = values;
    }
} 

然后您认为创建一个方法来添加新值可能是个好主意。在这里您可以更改内部实现,将相同的接口(interface)留给 MySequence 类的用户。

public class MySequence {
    private List<Object> values;

    public void add(Object value) {
        values.add(value);
    }

    public Object[] getValues() {
        return values.toArray(new Object[values.size()]);
    }

    public void setValues(Object[] values) {
        this.values = Arrays.asList(values);
    }
}

关于java - 通过访问方法引用属性还是直接在父类(super class)中引用属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548442/

相关文章:

compiler-construction - 引导编译器:为什么?

java - HttpResponse header 的 Junit 测试

java - 通过将我们的模型类的实例传递给可比对象和将包装器传递给可比对象来使用可比对象有什么区别?

theory - btree 和 b+tree 只在叶子节点存储数据吗?

windows - 学习音频操作

javascript - 一个长 If 条件与许多带有检查点的较小条件

java - 更改 Apache POI 中单元格注释的大小

java - 如何修改我的 Android 项目中的 BuildConfig.java?

java - 父类(super class)中的私有(private)方法可以在子类中被覆盖吗?

algorithm - 线性化具有多个源的 DAG