转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
【Gabing Delva 第1篇】         ★★★★

【Gabing Delva 第1篇】

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2039 更新时间:2009/4/23 18:35:14
Text:=''''right'''';  end;

{ Tson }

function Tson.throwhand: string;

begin  Form1.edit2.Text:=''''left'''';   end;

 

//这是对函数的调用:

procedure TForm1.Button1Click(Sender: TObject);

var  FatherUse:Tfather;  SonUse:Tson;

begin

FatherUse:=Tfather.Create;

SonUse:=Tson.Create;

 

FatherUse.throwhand;

SonUse.throwhand;

 

FatherUse.Free;

SonUse.Free;

end;

这是效果图:

我们看到,父类被一个叫virtual的关键字所修饰。这是何故?不加行吗?当然不行,原因就是前面所述,Delphi的方法都是静态的。我们知道,Java中,被修饰成abstract 或final的方法是不能被覆盖的。由此可知,Delphi的默认的静态方法也不能被覆盖。因此,Delphi定义了两个关键字:virtual(虚拟)和dynamic(动态)。它们让函数和过程成为动态的,用于后关联。Virtual和dynamic作用大致相同。只是virtual的方法较dynamic的方法在VMT中占用空间较大,而执行时间较短。这是因为,子类在override父类中的某一个virtual方法时,VMT会为子类提供未被voerride的其它父类的virtual方法。而dynamic则只提供被override的方法。这两个方式个有好处,在Delphi中常被一起使用。

嗯,再多想想。如果父类的一个virtual方法不但要被子类方法override,还要被同一个类中的同名方法overload,那要怎么做呢?看看下面的例子:

type

  Tfather=class

  public   //多了关键字overload
   function throwhand:string; overload;virtual;

   function throwhand(m:integer):integer; overload;virtual;

   end;

type

  Tson=class(Tfather)

  public    //多了关键字reintroduce,我发现不用它也行。但建议使用。

   function throwhand:string;reintroduce;override;

   end;

我们再来看看实现部分:

{ Tfather }

function Tfather.throwhand: string;

begin

 result:=''''right'''';

end;

function Tfather.throwhand(m: integer): integer;

begin

result:=m;

end;

{ Tson }

function Tson.throwhand: string;

begin

 Form1.edit2.Text:=''''left'''';

end;

这是调用部分:

procedure TForm1.Button1Click(Sender: TObject);

var

  FatherUse:Tfather;

  SonUse:Tson;

begin

FatherUse:=Tfather.Create;

SonUse:=Tson.Create;

 

Form1.edit1.Text:=''''usehand:''''+FatherUse.throwhand+''''throwfar:''''+inttostr(FatherUse.throwhand(500))+''''m'''';

SonUse.throwhand;

 

FatherUse.Free;

SonUse.Free;

end;

好了,Delphi的覆盖就聊到这里,嘻嘻,该来杯咖啡享受一下了。下面是Java的覆盖,它可没有那么多关键字。

这是Do.java文件的代码:

class A{   //这是父类

  void throwhand(){

    System.out.println("right!");

  }

}

class SA extends A{   //这是子类

  void throwhand(){

    System.out.print("left!");

  }

}

public class Do{

  public static void main(String[] args){

    A  a=new A();   //父类实例化;

    SA s=new SA();  //子类实例化;

    System.out.println("-------------------------");

    System.out.print("Father throwhand is: ");

    a.throwhand();   //调用

    System.out.println(" ");

    System.out.print("Son throwhand is: ");   

    s.throwhand();   //调用

  }

}

这是效果图:

上一页  [1] [2] [3]  下一页


[Delphi程序]【Gabing Delva 第2篇】  [Delphi程序]【Gabing Delva 第0篇】我的小铁锨(代序)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台