内容摘要:OOP的英文全称是Object Oriented Programming,翻译过来就是面向对象编程。OOP是一种非常重要的编程思想。也许你会对这种抽象的东西不感兴趣,可是几乎任何一个高手都会告诉你:“语言并不重要,重要的是编程思想。”
既然如此,那么这种抽象方法又有什么用呢?这个问题我们将在接下来的“多态”部分进行讨论。
1.3 多态
多态相对来说比较复杂一点。不过不要担心,它的内容比较少,而且如果以前的知识掌握得比较稳固的话,多态的概念是水到渠成的。
先来讨论一下类型的兼容性问题。下面是一个例子:
type
TAnimal = Class
Procedure Voice;virtual;
...
end; TDog = Class(TAnimal)
Procedure Voice;Override;
...
end; implementation Procedure TAnimal.Voice;virtual;
Begin
PlaySound('Anim.wav',0,snd_Async);
End; Procedure TDog.Voice;virtual;
Begin
PlaySound('Dog.wav',0,snd_Async);
End;TDog类继承了TAnimal类,并重载了其中的Voice方法。PlaySound是一个WIN API函数,可以播放指定的wav文件。(这个函数的定义在MMSystem.pas文件中可以找到。)
先看这段代码:
var
MyAnimal1, MyAnimal2: TAnimal;
Begin
MyAnimal1 := TAnimal.Create;
MyAnimal2 := TDog.Create;
...在实现部分的第一行中,建立了一个TAnimal类型的对象,并将其赋予TAnimal类型的变量MyAnimal1。这是很正常的事。但在第二行中,建立了一个TDog类型的对象,并将其赋予了TAnimal类型的变量MyAnimal2。这看上去令人吃惊,但这些代码是完全合法的。
众所周知,Pascal以及Object Pascal是一种类型定义严格的语言,你不能将某个类型的值赋予不同类型的变量,例如将一个整型值赋予布尔型变量,将会导致出错。但是,这个规则在涉及到OOP领域时,出现了一个重要的例外,那就是:可以将一个子类的值赋予一个父类类型的变量。但倒过来却是不行的,一个父类的值决不能赋予一个子类类型的变量。
作者:左轻侯 责编:豆豆技术应用
正在加载评论...
- Delphi新闻
- Delphi教程
- Delphi 7.0
- Delphi 2007
- Delphi控件
- Delphi网络编程
- Delphi for php
- Delphi界面/视图
- Delphi系统控制
- Delphi数据库
- Delphi源码下载