新浪博客

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 (都成私有的了)

我的更多文章

下载客户端阅读体验更佳

APP专享