深入Delphi编程(OOP)

豆豆网   技术应用频道   2007年11月19日    社区交流

内容摘要:OOP的英文全称是Object Oriented Programming,翻译过来就是面向对象编程。OOP是一种非常重要的编程思想。也许你会对这种抽象的东西不感兴趣,可是几乎任何一个高手都会告诉你:“语言并不重要,重要的是编程思想。”

  (可能有人会问起VB的情况。VB不支持继承,因此并没有什么复杂的类库,它自己的控件也少得可怜,主要是使用ActiveX控件。)。

  也许你已经若有所悟,为你的发现而心痒难骚了吧。但是,我们要讨论的东西当然不会仅仅这么简单。

  在1.1部分(“数据封装”),我们讲到了“Create方法是每一个Class都具有隐含的方法”。其实,这种说法是不准确的。事实是,在Delphi中,所有的类都默认继承自一个最基础的类TOject,甚至在你并未指定继承的类名也是如此。Create方法是TObject类具有的方法,因此理所当然,所有的类都自动获得了Create方法,不管你是否实现过它。想想看就知道了:如果没有Create方法的话,怎样建立一个对象呢?

  你可能注意到了Create方法是一个特殊的方法。不错,Create方法的确非常特殊,甚至于它的“头衔”不再是function或procedure,而是Constructor(构造器)。你可以在VCL的源码中见到这样一些例子:

  Constructor Create;

  构造器不仅是一个Delphi关键字,而且是一个OOP方法学的名词。与之相对应的,还有Destructor(毁坏器)。前者负责完成创建一个对象的工作,为它分配内存,后者负责释放这个对象,回收它的内存。要注意的一点是,Constructor的名字一般是Create,但Destructor的名字却不是Free,而是Destroy。例如:

  Destructor Destroy;

  那么,在以前的代码,为什么又使用Free来释放对象呢?二者的区别是,Destroy会直接释放对象,而Free会事实检查该对象是否存在,如果对象存在,或者对象不为nil,它才会调用Destroy。因此,程序中应该尽量使用free来释放对象,这样更加安全一些。(但要注意,free也不会自动将对象置为nil,所以在调用free之后,最好是再手动将对象置为nil。)

作者:左轻侯    责编:豆豆技术应用

正在加载评论...