私有修饰符如何保护对象的封装,而不是类?

时间:2017-09-14 14:00:35

标签: java private encapsulation

在Java中,我理解为什么我们在某个类中将实例字段定义为私有,这是为了保护类的封装。但是,我对该类的实例感到困惑。见下文:

public class DotaHero {

private String name;

...

}

直到现在,任何外部类都无法直接使用name!然后,

DotaHero zeus = new DotaHero();
zeus.name = "Zeus";

这在Java中是合法的。但是,任何讨厌我的人都会轻易改变我的代码,例如:

zeus.name = "Chick";

然后,当我使用对象zeus调用“zeusWrath”技能时,它会在屏幕上显示一个脚本,“小鸡很生气!”.........

也许有人会说我应该使用setter方法来定义名称,并在里面配置一些检查机制。但是,我的对手仍然可以通过name对象直接访问zeus

我确信我误解了一些东西,但我找不到它......

0 个答案:

没有答案