下面举个例子:
unit Unit1;
interface
type TStudent
=
class
private
//...
//...
procedure test;
implementation
end
我写了一个类TStudent是继承自TObject的,TObject有一个Create构造函数。然而我现在要在TStudent类中重载这个构造函数,我们可以在类的public部分加上constructor Create(FSTR:string);overload;写这个重载的构造函数的实现(写在implementation下面)
constructor TStudent.Create(FSTR: string);
begin
showmessage(FSTR);
end;
然后在创建这个类的实例的时候就会有两个Create构造函数可选,一个没有参数的,一个是带参数的。这就是构造函数的重载。
下面说下override,现在有一个类继承自上面定义的TStudent类,然后要重写test这个procedure(注意,只有在public或是protected部分声明的才可以被子类继承,如果test被声明在private部分就不能被子类继承):
unit Unit2;
interface
type
Tstu1
=
class(TStudent)
private
//...
public
procedure test;override;
implementation
procedure test;
begin
inherited;
showmessage(
'
我是儿子
'
);
end;
end
.
在override时,如果override的是procedure,则加上关键字inherited; 就会执行父类同名procedure的所有过程,然后再执行子类中特有的过程,如果override的是function则不会执行父类中同名function的内容.这一点要注意下
本人也是初学DELPHI,好象上面的东西描述的不是很准确,只是个人摸索的结果,希望不要误导大家,还是要多去看下DELPHI面向对象编程概念。
转自:http://blog.csdn.net/xiao_jun_0820/article/details/2137720
和overload(重载)的一些看法 .&spm=1001.2101.3001.5002&articleId=6714308&d=1&t=3&u=7e18e2d37d3c46d785bebbd6d84baf44)
710

被折叠的 条评论
为什么被折叠?



