关于继承。人的社会中,继承一般发生在有血缘关系的族群中。最直接的例子一般是,儿子继承父亲,包括姓氏、基因、财产和一切可以遗留的东西。但并不代表可以继承所有,因为父亲隐私的那一部分属于父亲独有,不可继承。当然,也可能是继承于族群的其他人,视实情而定。而在面向对象中,继承无处不在,子类继承父类,以访问权限来实现不同的控制规则,称为访问级别
public,具有最高的访问权限,就像是公司的董事会具有最高的决策权与管理权,因此public开放性最大,不管是否同一个程序集或者不管是否继承,都可以访问
protected,类似于公司业务部门经理的职责,具有对本部门的直接管辖权,在面向对象中就体现为子类继承这种纵向关系的访问约定,也就是只要继承了该类,则其对象就有访问父类的权限,而不管这两个具有继承关系的类是否在同一个程序集中。
internal,具有类比意义的就是internal类似于公司的职能部门的职责,不管是否具有上下级的隶属关系,人力资源部都能管辖所有其他部门的员工考勤。这是一种横向的职责关系,在面向对象中用来表示同一程序集的访问权限,只要是隶属于同一程序集,对象即可访问其属性,而不管是否存在隶属关系。
protected internal,可以看做是protected internal的并集,就像公司中掌管职能部门的副总经理,从横向到纵向都有管理权。
private,具有最低的访问权限,就像公司的一般员工,管好自己就行了。因此,对应于面向对象的开放性最小。
另外,对象中继承的目的是提高软件复用,而人类中的继承,不也是现实中的复用吗?