通过访问方法或直接在超类中引用attributtes?

时间:2016-05-31 14:26:57

标签: java theory

如果存在访问方法(get / set),直接引用字段属性是不是很糟糕?

当处理JComponents时,早期的考试会在构造函数中初始化字段属性,当我看不出它为什么不能在类字段中初始化时。这有充分的理由,还是我可以自由选择?

1 个答案:

答案 0 :(得分:1)

为私有字段创建getter和setter有助于隐藏类的内部实现。这意味着您可以在不将外部接口更改为其他类的情况下更改内部表示。

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

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

这是一个例子。

使用数组的原始代码:

public class MySequence {
    private Object[] values;

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

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

然后你认为创建一个添加新值的方法是个好主意。在这里,您可以更改内部实现,将相同的界面留给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);
    }
}