532628838
圣骑士
圣骑士
  • 注册日期2011-06-10
  • 发帖数98
  • QQ
  • 火币517枚
  • 粉丝77
  • 关注39
阅读:2947回复:0

DELPHI类的封装

楼主#
更多 发布于:2011-08-01 17:01
   在前面的例子中定义了一个student类,定义时如没有设置对类中数据和方法的访问限制,可以在类之外调用类中定义的方法对数据进行操作。使用stl.name的访问形式,可以直接对类中数据进行操作。这种用法虽然简单可行,但与使用全局变量一样,会引起较多问题。
    首先,全局变量可在程序的任何部位对数据进行访问,一旦某个全局变量发生改变就会影响所有程序。其次,当改变类中数据类型时,程序调用处的代码也必须相应修改,使得程序维护困难。再者,用户编程时必须清楚类中数据的定义,而且是在类之外编写对类中数据操作的程序。这样就违背了面向对象程序设计的思想。
    因此,更好的符合面向对象程序设计思想的解决办法,是将数据和对数据进行的操作方法封装在类中。
    封装(encapsulation)的含义是,把类看成一个黑匣子,上面有一小部分可视区,叫做类的接口,其中定义了一些用于供其他程序访问该类中数据的方法,而类中的数据及大部分代码都是隐含的。类的封装有以下特点:
    ·用户看不见、也不需要知道类中定义了哪些内部数据,因而无法直接对数据进行访问。
    ·通过调用对象方法来访问类中数据,用户不必关心方法的实现细节。即使改变了类中数据的定义,只要方法名及参数不改变,就不会对使用该类的程序产生任何影响。
    ·类的内部数据不能由类的用户直接访问。
    显然前面的student类的定义违反了封装的原则,因为用户可以访问该类的任何内部数据。
Delphi中通过设置类中数据和方法的访问权限,来实现封装的特性。

喜欢0 评分0
游客

返回顶部