通过访问方法或直接在超类中引用属性?
Refering attributtes by access methods or directly in superclass?
如果存在访问方法(get/set),直接引用字段属性是否不好?
另外,在处理 JComponents 时,早期的考试会在构造函数中初始化字段属性,而我看不出为什么它不能在 class 字段中初始化。这样做有充分的理由吗,还是我可以自由选择?
为私有字段创建 getter 和 setter 有助于 隐藏 class 的内部实现。这意味着您可以在不将外部接口更改为其他 classes.
的情况下更改内部表示
例如,如果您有一个自定义 class 实现类似于值序列的数据结构。第一个实现可以使用值数组。
添加一些新功能,您可以决定将值的内部表示从数组更改为列表。
举个例子。
使用数组的原始代码:
public class MySequence {
private Object[] values;
public Object[] getValues() {
return values;
}
public void setValues(Object[] values) {
this.values = values;
}
}
然后您认为创建一个方法来添加新值可能是个好主意。您可以在这里更改内部实现,为 MySequence class 的用户保留相同的界面class。
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);
}
}
如果存在访问方法(get/set),直接引用字段属性是否不好?
另外,在处理 JComponents 时,早期的考试会在构造函数中初始化字段属性,而我看不出为什么它不能在 class 字段中初始化。这样做有充分的理由吗,还是我可以自由选择?
为私有字段创建 getter 和 setter 有助于 隐藏 class 的内部实现。这意味着您可以在不将外部接口更改为其他 classes.
的情况下更改内部表示例如,如果您有一个自定义 class 实现类似于值序列的数据结构。第一个实现可以使用值数组。
添加一些新功能,您可以决定将值的内部表示从数组更改为列表。
举个例子。
使用数组的原始代码:
public class MySequence {
private Object[] values;
public Object[] getValues() {
return values;
}
public void setValues(Object[] values) {
this.values = values;
}
}
然后您认为创建一个方法来添加新值可能是个好主意。您可以在这里更改内部实现,为 MySequence class 的用户保留相同的界面class。
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);
}
}