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

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

对上面回答不满意?


你可能感兴趣的:(function,String,Class,Delphi,interface,pascal)