加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

public,protected,private,internal的作用域

(2011-08-12 17:29:37)
标签:

public

protected

private

internal

分类: 科技博文

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

0

阅读 收藏 喜欢 打印举报/Report
后一篇:锵锵三人行
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有