注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 科普系列之-使用Windows的..
 帮助

类成员封装等级学习


2007-06-22 14:20:03
 标签:封装 类成员   [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://520920.blog.51cto.com/126264/31251
Object Pascal类成员客分为5个封装等级:
1.private:
     只能在该类声明所在的单元(Unit)内使用。此外,父类中private成员可被继承,
  但它的子类无法使用这些成员。
2.protected:
     只能在该类声明所在的单元(Unit)内使用,但可供子类使用。
3.public:
     无论在任何单元内,该类于其所有子类的对象,都能使用它拥有的public成员。
4.published:
      与public一样,但有一个很大的区别:Delphi的对象检视器(Object Inspector)可直接
  显示本区域的成员,而此差别来自RTTI(runtime type information)机制。
  a.重载(overloaded)函数不可作Published事件,
  b.数组类,字段(field)(除非它属于class或interface类)不可作Published属性。
  //RTTI(runtime type information)机制,为published所作,它允许程序动态查询该类的published的
  //字段,属性(包括属性及事件)并且加载类的方法。必须使用“{$M+}”编译指令才能启动RTTI,或者
  //是它的祖先类以上述状态编译,启动RTTI,然后在对象检视器显示。一般的窗体(TForm),可以显示
  //它的published成员,因为它的父类有一个TPersistent类,是通过“{$M+}”编译指令编译而成,能启动
  //RTTI。而所有对象模版上的组件类,几乎都继承自TPersistent类。
5.automated:
     与public一样,区别是:当我们使用自动化服务器(Automation Server)时,“Automation type
  information”是为成员所设置。只能在OleAuto单元出现,继承自TAutoObject,且OleAuto单元本来就
  有默认的Automated区。ComObj单元无法具有Automated区。

本文出自 “数据库爱好者” 博客,请务必保留此出处http://520920.blog.51cto.com/126264/31251





    文章评论
 
2007-06-24 21:39:23
收藏, 5个封装等级 automated老是把它给忘啦

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: