多年来我一直在编程,我认为我甚至理解公共,私人和受保护的大部分区别,但这些名称是否只是误导?这些能见度水平只是为了帮助我们避免绊倒自己的脚趾吗?我编写的许多语言似乎都没有强制执行大部分规则,而且我从未听说过黑客入侵系统,因为你的一个变量没有标记为私有。
我很想知道它多年来一直困扰着我。
答案 0 :(得分:6)
如果黑客可以正确计算内存偏移量,则可以访问私有变量。不太难。
这些访问控制涵盖了更广泛且通常不同的错误类别。更好的封装简化了代码并使其更易于推理,从而清除了发现其他安全问题错误的途径。 (也就是说,间接有助于安全。)
有意破坏的代码也可能更难以意外打破: - )
答案 1 :(得分:2)
访问说明符是一种订购源代码的方法,而不是安全功能。
由于类的成员变量是在您自己的代码中定义的,因此无论访问说明符如何,都可以通过多种方式(指针,宏)访问它们。
答案 2 :(得分:1)
如果您为其他人创建了一个库,您希望公开API并隐藏其他所有内容。您不希望到处都有未记录的“功能”。这些可能导致各种错误,反过来又会产生安全漏洞。
即使代码不适合其他人,也很容易忘记并通过指定某个预期的顺序来惹恼自己,或者认为变量意味着另一个意味着另一个。
所以简短的回答是它只是一种编程方便,但这些编程方便可以帮助您创建更健壮,更安全的代码。