我知道这是很琐碎。但为什么我们要定义private,然后我们使用getter和setter。这更像是为了防止程序员在使用私有变量或方法时犯错误吗?或者是出于安全原因。如果出于安全原因,那么获得者或制定者有什么意义?我知道我们可以在getter和setter中有限制,但是如果子句主要是为了防止错误而不是隐私限制。例如。我们通常不会说这些成员通过if子句限制对此方法的访问。
谢谢。
我知道这是很琐碎。但为什么我们要定义private,然后我们使用getter和setter。这更像是为了防止程序员在使用私有变量或方法时犯错误吗?或者是出于安全原因。如果出于安全原因,那么获得者或制定者有什么意义?我知道我们可以在getter和setter中有限制,但是如果子句主要是为了防止错误而不是隐私限制。例如。我们通常不会说这些成员通过if子句限制对此方法的访问。
谢谢。
对每个变量自动,不假思索地创建getX()
和setX()
方法的做法是不好。正如你所观察到的,它几乎毫无意义。
但是这是不认为部分是坏的。方法比暴露变量要好得多,因为正如你所观察的那样,你可以控制如何访问底层数据。如果您认为约你在做什么,并应用存取器和存取适当的,他们是一个很好的工具:
这些只是一些你可以用mutators和访问器做的事情。通过使用它们,您可以轻松更改软件并轻松维护。
我们使用私有字段并具有getter和setter,以便其他类可以访问这些私有字段。如果我在项目中有两个类,比如说Car.java和Driver.java,我们希望Driver对象能够访问Car.java中的私有字段“wheel”(否则驱动程序不能驱动汽车)。但是,如果该字段是专用字段,则只能使用返回该字段值的getter方法进行访问。安装者允许外部类改变字段的值。您可以通过将您的字段公开(或在适当情况下进行保护)而不是私人方式来避免使用getter和setter。
它允许您控制对事物的访问.....通过封装对数据片段的访问,您可以自由地更改数据所在的位置,甚至可以使其可计算。即,而不是返回一个字段的值,你做一些计算。
但是,和吸气剂和吸附剂一样好,如果你使用它们太多,那么它就是一个标志,你没有得到一个物体来做你需要的工作。
谢谢。正如我所说的,它主要是一个编程工具。我的意思是你可以为此添加限制或某事。但没有隐私的好处.. – Sara 2012-07-23 03:08:18
如果允许任何人编辑某个类的变量,那么很可能会发生非常糟糕的事情。 (例如,如果不小心的用户将分母改为零,我们可以摧毁宇宙[或者得到除零误差])。定义get()
和set()
方法允许您(程序员)准确定义其他人如何与您的变量交互。
还有一个好处,如果您使用getters和setter,它允许子类覆盖如何使用方法访问信息并提供更多的灵活性。
在示例的帮助下,让我解释一下这一点。假设我们有以下类:
class User {
private String username;
private String password;
}
现在在一个团队项目中,多个程序员正在工作。程序员A开发了User
类和程序员B必须在GUI界面上工作。策略决定的是password
字段不能少于5个字符。但是,除非您没有将数据字段private
两者都A和B必须始终检查分配给password
字段的新密码的有效性。
使他们以后现在假设你实现以下setter方法private
:
public boolean setPassword(String temp) {
if(temp.length() >= 5) {
this.password = temp;
return true;
}
else {
return false;
}
}
这样,只有一个有一次编码和乙有只使用它,而不用担心政策。这总是鼓励DRY(不要重复自己)规则。
Setter和Getter方法基本上用来限制其他人做任何更改。在Java语言中,我们提供数据隐藏概念。这是通过get和set方法实现的。
非常感谢。这正是我所期待的。但总的来说,我看到许多使用私有变量的大项目,然后添加了非常简单的getter和setter方法,没有限制,等等。所以我想知道你是否不想要返回一个特定的变量为什么他们一次又一次地使用它们..我知道它们是古老的惯例,但也许我们应该在某些时候改变这个旧标准.. – Sara 2012-07-23 03:14:10
很多时候,人们在不知道原因的情况下做事情,而且这绝对是一个那些时候!当你设计自己的类时,遵循这样一条简单的规则,即除非必要,否则不要添加任何存取方法。切勿将它们添加为“仅仅因为”! – 2012-07-23 03:17:03
是的,正好。但是很多人都是这样使用它们的。即使是高级程序员..就像他们已经沉迷于此.. – Sara 2012-07-23 03:19:43