Mat*_*oli 5 java oop encapsulation
它被认为是最佳做法封装使用private与存取(getter和setter)领域,而不是protected和public领域.
所以,按照这一最佳做法,我们从来没有使用protected和public了.他们变得无用,或者他们的用例是什么?
我唯一能想到的是公共static final属性(即类常量).
注意:Java世界中至少有这种情况,但问题代表所有语言.
最佳实践可能会随着时间而改变。
我可以想到公共领域的两个用例,这两个用例都存在争议。
Adam Bien在这篇文章中说,如果您使用 DTO,则不能使用 private + getter + setter,而只能使用公共字段。这样您就可以确保数据按原样传输,而不进行任何更改。但他同时补充道,这将花费你很多时间来解释为什么你这样做......
非常量公共字段的另一个用途是使用公共最终字段(在构造函数中初始化)来确保不变性。让你的课程像
public Person{
public final String lastName;
public final String firstName;
public Person(String firstName, String lastName){
this.firstName = firstName;
this.lastName = lastName;
}
}
Run Code Online (Sandbox Code Playgroud)
是某种新的最佳实践,在codemonkeyism等地方建议使用。
但是,除非您是代码的绝对所有者和/或您可以强制满足新标准,否则您应该继续避免使用公共/受保护的字段......