[Delphi] 2017-09-08 10:07 我来说两句  

Delphi 之 VCL 与泡妞模式<二>

EDSTEAM的朋友们,大家好,今天,开课之前,先给大家出一道题目。B组和D组的同学请写一个全球之最短代码的Delphi程序;而C组的同学请写一个全球最短的代码的定义类语句。这两个程序都必须合法可行的。

答案:

(1)

Program a;

Begin

End;

(2)

Type a=class

  End;

今天的主题是:继承,还有相关的知识Virtual,Dymanic,Override Overload

(一)绝大多数的类都是从Tobjet下一层层继承下来的,假如,Tobjet是上帝的话,那么上帝的母亲是谁?

下面是一段故事:

有一天,小李问小蓝:我是怎么来到这个世界的?

小蓝说:你是你妈和你爸创造出来的。

小李问:那我爸和我妈又是从哪里来的呢?

小蓝说:是上帝创造出来的。

小李问:上帝又是哪个创造出来的呢?

小蓝说:人有人他妈,神有神他妈,上帝也有上帝他妈。

小李问:上帝他妈又是谁呢?

小蓝说:如果今晚你睡在我上面的话,上帝就会诞生,你说,上帝他妈将会是谁呢?

小李:(无言以对,呆了…….)

我们知道,类都是一层层继承下来的, Tobjet是最基本的类,至于Tobjet是继承谁的,我们就不管他了,也没必须自己制造一个像Tobjet类似的类,因为Tobjet已经帮我们做了很多基本的动作。

(二)如何继承一个类,我们继承了它什么东西

某天,小李和小蓝吵架

小李说:你老爸给你的家产呢,都到哪去了?

小蓝说:我老爸除了给我一间空房子外,其他的让我自力更生。

小李说:骗人,你是不是拿去给其他女孩了?

小蓝说:冤枉呀,除了老爸给我的知识外,再也没有其他的东西了啊!

上面例子上,小蓝继承了他老爸什么东西,也就是叫继承了什么属性。

对,就是空房子和知识这二个属性,其他属性却要自己扩充的,也就是说,公用的属性(房子),保护的属性(知识)都继承了,其他的属性(私有的),都不能继承下来了。

(三)继承了一个类,我们继承了什么方法(Method),父亲没有实现功能的方法,我们要怎么才能补充

继续上个故事中

这时,老蓝走过来了,对小蓝说:孩子啊,那个年代我很穷,没来得及修建这座花园,就留给你来修建好了。

小蓝说:好啊!但我现在没有那么多钱财。

小李接着说:你一个月那么多的工资,都到哪里去了,泡妞去了?

小蓝说:没有啊,哪敢呀!

老蓝说:好啊,你这真小子,好的没学多少,坏的却学透了。

小蓝说:有其父必有其子,我学了你的手艺,学了你的交际,学了你的幽默,却没学会当医生。现在,我在你的手艺基础上,又学到了一些,交际能力方法和你一样,手法却不同,幽默却仍然是你的那一套,我完全没改变,医术我是荒废了,一点能力都没有。

  上面例子中,小蓝的老爸有什么能力(Method),小蓝继承了什么,又荒废了什么,如果写成Delphi类,应该怎么写?

答案:

TLaoLang=class

Public

  Procedure shaoyi;virtual;

  Procedure jiaoji;Dymanic;

  Procedure youmo; virtual;

  Procedure yishu;

End

TXiaoLang=class(T Laolang)

Public

  Procedure shaoyi;override;

  Procedure jiaoji;override;

  Procedure yishu;reintroduce

End

(四)什么时候用Virtual,什么时候用Dymanic;什么时候用Override,什么时候用Overload。

(五)Override与Overload的区别和用法

话说小莉从老蓝那学来手艺和交际后,天天用学来的手艺做一些小玩意哄公司女孩玩,有一天,小蓝和一个女孩在赌东西。

  小蓝说:如果我的左手变出巧克力我吻你左脸,如果我的右手变成朱古力的话,你也吻你一个你的右脸。

  女孩说:如果变不出来呢?

  小蓝说:那就倒过来给你吻好了。

上面的例子中,小蓝继承了什么?如果把左手和右手都当成同一个类型,就是手,那么,根据变的东西不同,他怎么对应?

  如果上面写成Delphi表,该如何写?

TXiaoLang=class(TLaolang)

Public

 Procedure shaoyi; override

 Procedure jiaoji; override

 function change(hand: TLefthand);overload;

 function change(hand: TRighthand); overload;

end;

---------------------------------------- 第二节完