monetto
2022-08-08 10:37:40 +08:00
说实话,无论程序怎么设计都可以跑,即使语言自身没有提供这些修饰符,能做的事也一个不少。
但是这三个的作用感觉在语义化上。比如 Public 表示这个成员或者方法可以被外部发现访问,而 Private 表示外界无需访问也不允许访问。
例如说 我有一个函数 作用是 返回一个数 x2 ,那么我的函数可以这样写。
Public doubleNum (int num) {
return self.doubleAdd(num);
}
Private doubleAdd (int num) {
return num + num;
}
这里的 doubleAdd 可以写成 num * 2 也可以写成 num + num 。
这个是外界不需要关心的。
外界只需要知道,我可以调用你的 doubleNum 来实现一个数 * 2 ,但是我不关心你怎么实现的。
还有一个场景,比如,一个对象有两个变量,我想让其中一个变量发生变化时,另外一个变量 + 1 。
Public int a = 0;
Public int b = 0;
正常来写的话,外界只需要调用
obj.a = 1;
obj.b += 1;
但是一旦外界忘记调用 obj.b += 1 时,程序就会发生异常。
而且很多时候,外界不需要关心这个 b ,所以可以这样封装。
Private int a = 0;
Private int b = 0;
Public setA (int num) {
self.a = num;
self.b += 1;
}
Protected 同理,类似的。只不过添加了 子类 可以改变 父类 这个规则。