如何限制另一个类更改java中的属性
根据封装,字段应该是私有的和公共的getter setter 但是使用setter有一种方法可以让另一个类改变私有字段的值,那么应该用什么方法来保护字段呢 请考虑本班讨论:如何限制另一个类更改java中的属性,java,oop,encapsulation,Java,Oop,Encapsulation,根据封装,字段应该是私有的和公共的getter setter 但是使用setter有一种方法可以让另一个类改变私有字段的值,那么应该用什么方法来保护字段呢 请考虑本班讨论: class Emp { private String name; private int age; public Emp() {} // getters and setters public String getName() { return name;
class Emp {
private String name;
private int age;
public Emp() {}
// getters and setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
需要设置器时,请添加某种控件:
public void setName(String name) {
if (name == null) {
throw new IllegalArgumentException();
}
this.name = name;
}
使用java bean时,还可以使用角色:
@RolesAllowed("Administrator")
public void setName(String nam) {
...
}
需要设置器时,请添加某种控件:
public void setName(String name) {
if (name == null) {
throw new IllegalArgumentException();
}
this.name = name;
}
使用java bean时,还可以使用角色:
@RolesAllowed("Administrator")
public void setName(String nam) {
...
}
在构造函数中传递数据:
class Emp {
private String name;
private int age;
public Emp(String name, int age) {
this.name = name;
this.age = age;
}
// getters
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
在构造函数中传递数据:
class Emp {
private String name;
private int age;
public Emp(String name, int age) {
this.name = name;
this.age = age;
}
// getters
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
您可以使该类不可变 不可变对象是一个在不可变后不会改变状态的对象 实例化
使类成为final可以确保该类不能被子类化。此子类可能会增加可变性。您可以使该类不可变 不可变对象是一个在不可变后不会改变状态的对象 实例化
使类成为final可以确保该类不能被子类化。此子类可能会增加易变性。如果您不希望其他类能够通过setter更改字段,请不要提供setter。将setter声明为
private
具有相同的效果
你说:
根据封装,字段应该是私有的和公共的getter setter
实际上,实现封装的关键要求是将字段声明为
private
。这就是阻止其他类“看到”的原因,或者取决于属性的实现方式。提供getter和/或setter是可选的。如果您不希望其他类能够通过setter更改字段,只需不提供setter即可。将setter声明为private
具有相同的效果
你说:
根据封装,字段应该是私有的和公共的getter setter
实际上,实现封装的关键要求是将字段声明为private
。这就是阻止其他类“看到”的原因,或者取决于属性的实现方式。提供getter和/或setter是可选的