Fid*_*ido -1 java variables private-members
我很困惑,因为我一直听到的是Private variables在Java中应该保护代码或变量。但是,如果任何人都可以访问该代码,那么如果它是私有的,则没有什么区别,他们仍然可以更改它。因此,当有权访问该代码的任何人都可以对其进行更改时,如何将其视为受保护的。
程序员谈论访问变量时,是指在程序运行时访问其值。保护代码免受更改是完全另一回事,需要人工处理,而不是编程语言的语法。在代码运行时,将变量设为私有可“保护”其值。在这个级别上,我们不关心保护它不受其他程序员更改代码本身的影响。所谓“数据隐藏”的目的是使内部数据对使用该类的其他类隐藏。这些其他类仅应通过在类上调用方法来访问行为,而不应直接更改变量的值。
遵循诸如“数据隐藏”之类的常规编程原理,可以帮助我们在程序员编写正确的代码时使用。如果任何类都可以更改变量的值,则很难确保该值有效。举例来说,您有一个变量,用于计算工厂制造的小部件的数量。通过使变量成为私有数据成员,可以更轻松地确保该值永远不会为负。另一方面,如果变量是公共变量,则另一个类可以将其更改为负值,这可能导致代码的其他部分崩溃。
变量是私有的,用于保护对象的状态——在面向对象的编程术语中,这称为封装。
这是一个非常简单的例子。想象一下,我们有一个 Person 类,一个 Person 的年龄是根据他们出生的年份计算的。
class Person {
private int yearOfBirth;
private int age;
public Person(int yearOfBirth) {
this.yearOfBirth = yearOfBirth;
this.age = Calendar.getInstance().get(Calendar.YEAR) - yearOfBirth;
}
public int getAge() {
return age;
}
}
Run Code Online (Sandbox Code Playgroud)
在某个地方的另一个类中,我们有这个......如果年龄是公开的,我们可以通过改变它而不更新出生年份来真正弄乱我们对象的状态。
public static void main(String[] args) {
Person bob = new Person(2000);
System.out.println("Bob's age: " + bob.getAge());
bob.age = 100; //This would be BAD!
}
Run Code Online (Sandbox Code Playgroud)
通过封装 age 变量,可以避免意外更改,我们的类可以管理自己的状态。任何使用我们类的人都不必关心计算一个人的年龄,因为它封装在我们的类中。
| 归档时间: |
|
| 查看次数: |
7800 次 |
| 最近记录: |