使用getter和setter的优点是什么 - 只能获取和设置 - 而不是简单地使用公共字段来存储这些变量?
如果getter和setter做的不仅仅是简单的get/set,我可以非常快地解决这个问题,但我并不是100%清楚如何:
public String foo;
Run Code Online (Sandbox Code Playgroud)
更糟糕的是:
private String foo;
public void setFoo(String foo) { this.foo = foo; }
public String getFoo() { return foo; }
Run Code Online (Sandbox Code Playgroud)
而前者需要很少的样板代码.
我正在为OCP 8处理一些练习问题。
一个问题涉及一类具有私有字段和私有获取方法的类。正确的答案是该代码违反了封装,因为getter方法应该是公共的。
public class A {
private String a;
private String getA() { return a; }
}
Run Code Online (Sandbox Code Playgroud)
但是,另一个问题是具有私有字段且根本没有getter方法的类。正确的答案是该代码遵循封装原则。
public class A {
private String a;
}
Run Code Online (Sandbox Code Playgroud)
假设所有数据字段都是私有的,那么大多数封装的顺序不应该至少是无获取方法,私有获取方法和公共获取方法吗?
我知道我的问题听起来可能是基于意见的,但考试却不是。