当前位置:  开发笔记 > 编程语言 > 正文

停止在Delphi中覆盖函数

如何解决《停止在Delphi中覆盖函数》经验,为你挑选了2个好方法。

如何在Delphi(2007)的子类中重写超类中的函数/过程?

我想标记它以便它不能被改变,我相信有一个最后的关键字,但不能为我的生活找到它的文档,所以我不是100%肯定这是我需要的.



1> Lars Truijen..:

关键字final就像你想的那样.见http://dn.codegear.com/article/34324和http://blogs.teamb.com/rudyvelthuis/2005/05/13/4311.此外,您可以将您的课程标记为已密封,以防止任何人继承该课程.您需要高于7的Delphi版本.

type
  TSomeClass = class
  protected
    procedure SomeVirtualMethod; virtual;
  end;

  TOtherClass = class(TSomeClass)
  protected
    procedure SomeVirtualMethod; override; final;
  end;



2> Roddy..:

你是对的 - 它是"最终的".这个片段显示了它.(来自Marco Cantu的一本书)

type
  TDeriv1 = class (TBase)
    procedure A; override; final;
  end;

  TDeriv2 = class (TDeriv1)
    procedure A; override; // error: "cannot override a final method"
  end;

编译给出:

[Pascal Error] Unit1.pas(11): E2352 Cannot override a final method

令我惊讶的一件事:Win32 Delphi支持此功能,而不仅仅是Delphi for .NET

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有