访问权限
封装的思想就是把一些状态打包只看到该看到的东西。我们把程序分为不同的类型和包,就出现是否允许访问的问题,甚至出现在同一个命名空间是否允许访问的问题。
不同的语言对于访问权限做法不一样,C 语言没有访问权限的概念,所有的方法都可以通过头文件的符号访问。
访问权限控制是编译器的概念。编译器通过识别访问权限,决定代码调用是否合法,编译是否成功。因为语言访问权限和基于文件系统或者操作系统的访问权限不是一个概念。
访问权限是编译器制定的规范,不需要在代码里添加关键字,它不属于语言规范的范畴,而属于编译器实现的范畴。尽可能不要让语言变得臃肿,而通过改变编译器或者通过库的方式扩展一些新的功能。
成员:public、internal、protected、private
成员可能属于语言规范的一部分,也可能不是。
在 OOP 语言比较常见的保护方式,私有的表示外界不能访问,继承类型可以访问。比如内部定义的状态不能让用户访问,继承类型需要访问。
内部在 C# 语言表示程序集内可以访问,Go 语言表示包只允许被哪些范围内的包访问。
默认权限:public、private
默认权限常见的有公开的和私有的。公开的表示谁都能访问,私有的表示外界不能访问只能自己访问。
C 语言默认权限是公