文档章节

覆盖虚方法

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 192
阅读 3
收藏 0
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

//夫类
  TParent = class
  protected
    function MyFun(i: Integer): Integer; dynamic;  //动态方法
    procedure MyProc; virtual;  //虚方法
  end;

//子类
  TChild = class(TParent)
  protected
    function MyFun(i: Integer): Integer; override;  //覆盖
    procedure MyProc; override;  //覆盖
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TParent }

function TParent.MyFun(i: Integer): Integer;
begin
  Inc(i);
  Result := i;
end;

procedure TParent.MyProc;
begin
  ShowMessage('Parent');
end;

{ TChild }

function TChild.MyFun(i: Integer): Integer;
begin
  i := inherited MyFun(i);  //先调用夫类方法,被 +1;当然可以不调用
  Inc(i);                   //子类再 +1
  Result := i;
end;

procedure TChild.MyProc;
begin
  inherited;  //先调用夫类方法;当然可以不调用
  ShowMessage('Child');
end;

//测试
procedure TForm1.FormCreate(Sender: TObject);
var
  p: TParent;
  c: TChild;
begin
  p := TParent.Create;
  c := TChild.Create;

  p.MyProc;  //Parent
  c.MyProc;  //Parent; TChild

  ShowMessage(IntToStr(p.MyFun(2)));  //3
  ShowMessage(IntToStr(c.MyFun(2)));  //4

  p.Free;
  c.Free;
end;

end.

本文转载自:http://www.cnblogs.com/del/archive/2007/12/05/983657.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
C++入门学习——虚函数表介绍

多态 多态是指使用相同的函数名来访问函数不同的实现方法,可以简单概括为“一种接口,多种方法”。 C++支持编译时多态(也叫静态多态)和运行时多态(也叫动态多态),运算符重载和函数重载...

Playboy002
2015/10/22
21
0
C++入门学习——虚函数表介绍

多态 多态是指使用相同的函数名来访问函数不同的实现方法,可以简单概括为“一种接口,多种方法”。 C++支持编译时多态(也叫静态多态)和运行时多态(也叫动态多态),运算符重载和函数重载...

Playboy002
2015/10/22
8
0
C++入门学习——虚函数表介绍

多态 多态是指使用相同的函数名来访问函数不同的实现方法,可以简单概括为“一种接口,多种方法”。 C++支持编译时多态(也叫静态多态)和运行时多态(也叫动态多态),运算符重载和函数重载...

Playboy002
2015/10/22
66
0
C++多态分析

多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphism),字面意思多种形状。 C++多态性是通过虚函数来实现的,...

li_wen01
2017/08/05
0
0
跟我一起学习C++虚函数--第三篇

上一篇我们讨论了在单一继承的情况下,具有虚函数的类对象的内存布局情况。本篇主要讨论在多继承情况下,对象的内存布局。 看例子: #include <iostream>using namespace std; class Left{p...

pathenon
2012/07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

new Date() 在Safari下的 Invalid Date问题

问题复现 var timeStr = '2018-11-11 00:00:00';var time = new Date(timeStr);// error: Invalid Date... 在safari浏览器下,time为Invalid Date, 导致后面代码执行错误; 其他浏览器诸...

会写代码的husky
11分钟前
1
0
0009-如何升级Cloudera Manager和CDH

1.文档编写目的 本文档讲述如何升级Cloudera Manager和CDH,通过本文档,您将学习到以下知识: 1.如何对Cloudera Manager进行停机升级 2.如何对CDH进行停机升级 3.如何在不影响集群作业的情况...

Hadoop实操
21分钟前
0
0
vue2中引用 better-scroll的方法

文章主要介绍了vue2中引用better-scroll和使用 better-scroll的方法,使用时有三个要点及注意事项在文中给大家详细介绍 ,需要的朋友可以参考下 使用时有三个要点: 一:html部分 <div class...

前端攻城老湿
31分钟前
0
0
浅谈教你如何掌握Linux系统

linux能做什么?相信绝大数人都有这样的疑问。可以玩吃鸡吗?可以玩lol吗? 如果你是以娱乐的名义来评价linux的可用性,对不起,linux可能不适合你,因为linux是一个工具,他是教你聪明的,不...

linuxprobe16
38分钟前
0
0
java中线程池的生命周期

线程池生命周期包括: RUNNING:接收新的任务并处理队列中的任务 SHUTDOWN:不接收新的任务,但是处理队列中的任务 STOP:不接收新的任务,不处理队列中的任务,同时中断处理中的任务 TIDYING:所...

小刀爱编程
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部