public,protected,private,internal的作用域
2011-08-12 17:29阅读:
C++/C#语言中类由最基本的属性、方法和继承组成。作为C++/C#保留的重要关键字public、protected、private,以及C#增加的internal,下面对它们修饰类的属性、方法和继承的访问权限都有什么区别。
总体来说,这几种访问修饰符的访问权限为:
访问修饰符
说明
public
公有访问。不受任何限制。
private
私有访问。只限于本类成员访问,子类,实例都不能访问。
protected
保护访问。只限于本类和子类访问,实例不能访问。
internal
内部访问。只限于本项目内访问,其他不能访问。
protected internal
内部保护访问。只限于本项目或是子类访问,其他不能访问
下面就两方面来讨论这几种访问修饰符的访问权限:
1.先说类成员变量及成员函数的的属性
public的变量和函数在类的内部外部都可以访问,而private只有在类的内部可以访问;
如果一个类没有派生出其他类,那么protected和private是完全相同的,也就是说protected和private一样只能在类的内部访问,不能在类的外部访问。但是在派生其他类的情况下,protected和private的区别就体现出来了。private型变量只能在类本身中访问,在其派生类中也不能访问;而protected型的变量可以在派生类中访问。
2.继承类型
private变量只在类本身可访问,因此不论哪种继承方式在派生类中都是不可访问的。
就其可作用范围来说,public > protected >
private,派生类中的数据类型是基类数据类型和继承方式中取小
的值。
继承中修饰数据类型的变化:
承
父类类型
子类类型
public xx
xx
(不变)
protected xx
protected(都变成保护类型)
private xx
private (都成私有的了)
|
|
承
父类类型
子类类型
public xx
xx
(不变)
protected xx
protected(都变成保护类型)
private xx
private (都成私有的了)
|
|
继承
父类类型
子类类型
public
xx
xx
(不变)
protected
xx
protected(都变成保护类型)
private
xx
private
(都成私有的了)