深入Delphi编程(OOP)

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

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

  而且,派生类还可以在基类的基础上加入自己的数据和方法。可以看到在TnewDate类中增加了一个新的方法GetTextNew。下面给出这个方法的实现部分:

  function GetTextNew:String;
  begin
  return := GetText;
  end;

  然后调用它:

  ADay.GetTextNew;

  这个新的方法工作得很好。

  为什么GetTextNew方法必须调用基类中的GetText方法,而不能直接使用GetText方法中的那些代码呢?原因是,Mouth,Day,Year这三个成员被声明为Private成员,因此它们即使在派生类中也是不能被访问的,所以必须调用基类中的GetText方法,间接地使用它们。如果要直接使用它们的话,可以将这三个成员的属性从Private改为Protected。在表1中可以看到,Protected属性的成员可以在声明类以及声明类的派生类中被访问,然而仍然不能被这两种情况以外的其他代码所访问。现在我们终于可以理解了,这个特殊的属性实际上提供了极大的方便:它使得类的成员被封装,避免了混乱,同时又能够让派生类方便地使用它们。

  (如果你是一个细心的人,你可能发现上面的话中间有一个小小的仳漏。当你真的在GetTextNew方法中访问了基类的Private成员的话,你可能会惊奇地发现程序也能够编译通过而且正常运行!其实,这个问题和OOP本身没有关系。上面我已经说过,在Delphi中,Private成员在声明类所在的单元文件中的任何地方都能被访问,因此如果TNewDate类和TDate类在同一个.pas文件中时,这种情况就不足为怪了。)

  怎么样,是不是觉得非常奇妙?通过这种继承的机制,类不再仅仅是数据和方法的封装,它提供了开放性。你可以方便地继承一个功能强大的类,然后添加进自己需要的特性,同时,你又不需要对基类进行任何的修改。相反,原作者对基类的任何改动,都可以在你的新类中立即反映出来。这非常符合代码的重用要求。

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

正在加载评论...