我正在学习使用Lazarus IDE的免费pascal,但我不知道如何在派生形式中继承方法。
我想要这样的东西:
Form base or father:
procedure HelloWorld;
begin
ShowMessage('Hello World from base form or father');
end;和form派生或子级:
procedure HelloWorld;
begin
inherited;
ShowMessage('Hello World from derived form or child');
end;我希望单击结果显示2条消息(例如Button1)
谢谢!
发布于 2015-02-20 04:47:15
为了更好地理解Object Pascal语言,我认为您应该从阅读freepascal参考指南开始。FreePascal是lazarus下面的底层编译器。
理解表单、标签、按钮等是对象、实例、类等概念的具体体现,这一点很重要。
在这一点上,类是绑定代码和数据的结构。您想要实现的内容如下:
Type
TMyClass = Class(<ancestorclass>)
<fields and methods>
End;
TMyChildClass = Class(TMyClass)
<fields and methods>
End;这意味着TMyChildClass是从TMyClass派生的类。如果两个类中的方法具有相同的名称,可以使用关键字"override“向编译器显示该方法已被子类覆盖,如下所示:
TMyClass = Class /* No parenthesis or ancestor name means the class derives from TObject */
Procedure ParentMethod;
End;
TMyChildClass = Class(TMyClass)
Procedure ParentMethod; Override;
End;
Procedure TMyClass.ParentMethod;
Begin
DoSomething;
End;
Procedure TMyChildClass.ParentMethod; /* Dont repeat the override */
Begin
Inherited; // This will call the parents method
End;这是在object pascal中进行方法重写的正确方法。如果你想要使用“继承”的类的定义中没有括号和祖先类的名字,那么两者之间就没有祖先关系,继承就不会做你期望做的事情。
发布于 2014-09-16 00:21:10
在Pascal中,procedure不是一种面向对象的编程构造。
FreePascal包括objects,对象可以包括过程:
https://stackoverflow.com/questions/25852375
复制相似问题