关闭

汽车类.轮子类,发动机类。。。delphi的一些问题

标签: delphipascalstringfunctioninterfaceclass
2865人阅读 评论(0) 收藏 举报
分类:

delphi中能否让一个子类既继承父类又实现定义好的接口?怎么实现?

比如
{父类:汽车类}
Tcar = class(TObject)   
  private
    name : string;
    Fwheel: Twheel;
    Fbrake: Tbrake;
    Fengine: Tengine;
    Fcarbody: Tcarbody;

  public
    function CarPackage(s : string): string; virtual; //组装汽车

end;

{接口}
interface
type
  carMove = interface

  function SpeedDown():string;  //减速
  function ShutDown():string;   //停止
  function Start():string;      //启动
  function carspeedUp():string;
  function StartBrake:string;//启动刹车
  end;

{子类}
uses
  TcarClass;
type TAodiQ7 = class(TCar)

private

public
  function CarPackage(s : string): string; override;
end;


昵称: hhkun0120  时间: 2011-08-31 23:13:34
Delphi(Pascal) code

unit Unit3;

interface

uses 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;
begin

end;

function TAodiQ7.carspeedUp: string;
begin

end;

function TAodiQ7.ShutDown: string;
begin

end;

function TAodiQ7.SpeedDown: string;
begin

end;

function TAodiQ7.Start: string;
begin

end;

function TAodiQ7.StartBrake: string;
begin

end;

{ Tcar }

function Tcar.CarPackage(s: string): string;
begin

end;

end.


昵称: jayqiang  时间: 2011-09-01 08:31:04
谢谢,我还想问下
Delphi(Pascal) code
//Sysutils是Pascal的一个库 uses Sysutils这个语句的意思就是调用这个库 uses Sysutils;

这个Sysutils 是什么样的一个库?
昵称: hhkun0120  时间: 2011-09-01 09:58:39
Sysutils 是系统工具库
昵称: sz_haitao  时间: 2011-09-01 10:07:33
Delphi(Pascal) code
[Pascal Error] TAodiA4cls.pas(21): E2003 Undeclared identifier: 'QueryInterface' [Pascal Error] TAodiA4cls.pas(21): E2003 Undeclared identifier: '_AddRef' [Pascal Error] TAodiA4cls.pas(21): E2003 Undeclared identifier: '_Release' [Pascal Error] TAodiA4cls.pas(29): E2008 Incompatible types [Pascal Error] TAodiA4cls.pas(35): E2003 Undeclared identifier: 'Result' [Pascal Fatal Error] CarProject.dpr(15): F2063 Could not compile used unit '..\src\TAodiA4cls.pas'

貌似接口写的不合规定
我到网上先查查
昵称: hhkun0120  时间: 2011-09-01 10:08:29
系统工具库里具体有什么常用的东西?
能否给几个例子。
引用 3 楼 sz_haitao 的回复:
Sysutils 是系统工具库
昵称: hhkun0120  时间: 2011-09-01 10:10:28
直接继承就可以了, class的只能够继承一个, 但接口是可以无限多个的

Child = class(Parent, Interface....)
昵称: dfasri  时间: 2011-09-01 10:23:56
使用Sysutils 是不是因为interface是系统工具库中的类?
昵称: hhkun0120  时间: 2011-09-01 10:26:42
[Pascal Error] TAodiA4cls.pas(21): E2003 Undeclared identifier: 'QueryInterface'
[Pascal Error] TAodiA4cls.pas(21): E2003 Undeclared identifier: '_AddRef'
[Pascal Error] TAodiA4cls.pas(21): E2003 Undeclared identifier: '_Release'

继承接口,必须实现这3个成员
昵称: diecode  时间: 2011-09-01 11:16:46

对上面回答不满意?


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    关注我谢谢。

    欢迎扫描关注我的公众号。


    公众号二维码
    个人资料
    • 访问:1144365次
    • 积分:12842
    • 等级:
    • 排名:第1128名
    • 原创:184篇
    • 转载:22篇
    • 译文:18篇
    • 评论:458条
    博客专栏
    最新评论