深入Delphi编程(OOP)

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

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

  这就叫做数据的封装(encapsulation)。这是OOP的第一个特征。一个优秀的OOP程序员,应该在设计类的时候,就确定将哪些重要的数据封装起来,并给出一个高效率的接口。

  需要指出的一点是,表1中Private部分的论述对于“标准的”OOP语言(例如C++)是完全正确的,但对于Delphi有一个例外。在Delphi中,Private成员除了在声明类中可以访问外,在声明类所在的单元(.pas文件)中的任何地方都能被访问,不论这些代码与声明类的关系如何。严格来说,这是违反OOP的原则的,我不明白Borland为何要这么做(据说是为了方便)。在关于Delphi的优劣性的讨论中,这是常被涉及的一个问题。

  1.2 继承与派生

  我们再来看一段代码:

  type
  TNewDate = class(TDate)
  Public
  function GetTextNew:String;
  end;  function GetText:String;
  begin
  return := inttostr(Mouth) + ':' + inttostr(Day) + ':' + inttostr(Year);
  end;

  可以看到,在class后面出现一个包含在括号中的类名。这种语法表示新的类继承了一个旧的类。继承了原有类的类称之为派生类,也叫子类,被继承的类称之为基类,也叫父类。

  派生类与基类之间是什么关系呢?当派生类继承自一个基类时,它自动具有基类的所有数据、方法以及其他类型,无须在派生类中再做说明。例如,可以象下面这段代码这样使用TNewDate类:

  var
  ADay: TNewDate;
  begin
  ADay := TNewDate.create;
  ADay.SetValue(1,1,2000);
  if ADay.LeapYear then
  ShowMessage('闰年:' + Inttostr(ADay.year));
  ADay.free;
  end;

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

正在加载评论...