http://kudick.blog.163.com/blog/static/1666066320091055414453/ DoDo:
protected: 爷爷有一张银行卡,爸爸能够用,儿子也能够用,隔壁老王不能够用(由于老王跟爷爷没有继承关系)
internal: 王总有一张银行卡,秘书能够用,经理能够用,王总儿子不能够用(由于银行卡属于公家财务,只能由公司内部人员【同一个程序集】使用,王总儿子虽然继承王总,可是他不是公司内部人员,因此也不能公款私用)
PS: 若是各个程序集使用了相同的强命名,那么internal也能够在不一样的程序集下使用,就好比上面的internal例子,
王总有一张银行卡(并且还有一本存折【存折至关于强命名】),同时王总的儿子也有一本存折【同样的强命名】,那么王总的儿子也能够使用了,隔壁老王也有一样的存折【强命名】因此他也能够取钱!!
private<protected/internal<public 这个很明显了。 关键是protected和internal的问题。
protected限定的是只有在继承的子类中才能够访问,能够跨程序集
internal限定的是只有在同一个程序集中才能够访问,能够跨类 因此它们是有点交叉的。 当一个CLASS是ITERNAL的时候,要求其全部的成员的限定范围不能大于internal。 因此,当一个INTERNAL的CLASS写PROTECTED的时候,就须要两个限定符了: internal protected 这样,限定了访问范围是:本程序集、继承的子类。 所以,关系是: private<internal protected<internal/protected<public internal和protected的具体范围大小就不能准确的界顶了。