我一直在想上的话题public,protected和private性能.当我不得不破解某人的代码时,我的记忆很容易回忆起,并且将被黑客攻击的类变量声称为private总是令人沮丧.
此外,还有(更多)时间我自己写了一个课程,并且从未认识到任何将房产私有化的潜在收益.我应该注意到,使用公共变量不是我的习惯:我通过使用getter和setter来遵守OOP的原则.
那么,这些限制的重点是什么?
私有和公共的使用称为封装.简单的洞察力是软件包(类或模块)需要内部和外部.
外面(公共)是你与世界其他地方的合同.你应该尽量保持简单,连贯,明显,万无一失,非常重要,稳定.
如果您对良好的软件设计感兴趣,那么规则就是:将所有数据设为私有,并且只在需要时才公开方法.
隐藏数据的原则是类中所有字段的总和定义了对象状态.对于编写良好的类,每个对象应该负责保持有效状态.如果该州的一部分是公开的,那么该班级永远不会给予这种保证.
一个小例子,假设我们有:
class MyDate
{
public int y, m, d;
public void AdvanceDays(int n) { ... } // complicated month/year overflow
// other utility methods
};
Run Code Online (Sandbox Code Playgroud)
您无法阻止该类用户忽略AdvanceDays(),只需执行以下操作:
date.d = date.d + 1; // next day
Run Code Online (Sandbox Code Playgroud)
但是,如果您y, m, d私有并测试所有MyDate方法,则可以保证系统中只有有效日期.