unit Unit3;interfaceuses SysUtils;type
carMove = interface
function SpeedDown(): string; //减速
function ShutDown(): string; //停止
function Start(): string; //启动
function carspeedUp(): string;
function StartBrake: string; //启动刹车
end; {父类:汽车类}
Tcar = class(TObject)
private
name: string;
Fwheel: Twheel;
Fbrake: Tbrake;
Fengine: Tengine;
Fcarbody: Tcarbody;
public
function CarPackage(s: string): string; virtual; //组装汽车
end; TAodiQ7 = class(TCar, carMove)
private
protected
// interface carMove
function SpeedDown(): string; //减速
function ShutDown(): string; //停止
function Start(): string; //启动
function carspeedUp(): string;
function StartBrake: string; //启动刹车
public
function CarPackage(s: string): string; override;
end;implementation{ TAodiQ7 }function TAodiQ7.CarPackage(s: string): string;
beginend;function TAodiQ7.carspeedUp: string;
beginend;function TAodiQ7.ShutDown: string;
beginend;function TAodiQ7.SpeedDown: string;
beginend;function TAodiQ7.Start: string;
beginend;function TAodiQ7.StartBrake: string;
beginend;{ Tcar }function Tcar.CarPackage(s: string): string;
beginend;end.接口carMove 声明的 SpeedDown() ShutDown() Start() carspeedUp() StartBrake这几个函数和方法在子类TAodiQ7又重新申明了,我不明白的是既然又重新申明为什么还要在接口申明不是多此一举吗,没分了请大家不要见怪
解决方案 »
- 使用DBgrideh的时候,如何使得输入数据的时候,能够实现模糊搜索?
- 如何打印能排版的一段文字(如word的能设置行间距、字间距)?
- 怎样去掉ADO里需登录密码的对话框?
- 请教:调用FASTREPORT 问题?
- 【探讨】把DELPHI的一代码话翻译成C++ builder的。
- quickreport的输出问题
- dbgrid中如果不给TColumn付FieldName,怎样给该列的单元格付值?谢谢!
- 梦想当程序员,我该看什么书?
- 用ADO控件操作单独的表时可以不进行odbc设置吗?
- Delphi能不能处理这个问题?
- DELPHI读取图片文件
- TChromium 插件如何删除历史数据及网站数据和插件数据
还有就是接口的问题,由于一个类只能继承一个基类,也就是上面的两种箱子注定不可能有共性定义了,当然没这么悲剧,还有接口在,假设一个接口的定义是,看到红色箱子(接口的GUID)向后数5个各自就是橘子,那么以上两个不同的类只要继承这个定位方法,就可以让CPU顺利找到橘子了,和他的派生自哪个类没半毛钱关系,接口虽然没有实现任何内容,但它明确给出了函数定位方式,在GUID后偏移4个字节就是第一个接口成员函数的函数指针,以此类推,那么继承者也会按这个规则编译接口函数指针地址,那么共性就有了。。