http://www.cnblogs.com/huangjacky/archive/2009/12/11/1622186.html
Delphi - 新语法之类相关的
技术交流,DH讲解.
今天就把Delphi新语法中与类相关都讲了.
1 静态系列.
静态成员变量,静态方法,静态属性.
静态方法只能使用静态成员变量或者其他常量.
一个例子:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
type TMyClass = class strict private class var FX: Integer; strict protected class function GetX: Integer; static; class procedure SetX(val: Integer); static; public class procedure StatProc(s: String); static; class property X: Integer read GetX write SetX; end;TMyClass.X := 17;TMyClass.StatProc('Hello'); |
我们可以看到就是一个class关键字.
2 内部类.
内部类这个概念,我最早是在张孝祥的<<Java就业培训教程>>看见的.现在Delphi也支持这个了.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
type TOuterClass = class strict private MyField: Integer; public type TInnerClass = class public MyInnerField: Integer; procedure InnerProc; end; procedure OuterProc; end;procedure TOuterClass.TInnerClass.InnerProc;begin ...end; |
至于这个有什么用,我也不是很清楚的.应该就是可见性上面的区别.
3 可见性.
在Delphi里面private里面东西,继承类,外部类都可以访问.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
THuangJacky = class private FName:string; end; TTheFiend = class(THuangJacky) public procedure SayMyName; end;{ TTheFiend }procedure TTheFiend.SayMyName;begin ShowMessage(FName);end; |
肯定有人大呼,违反了面向对象,然后进行一轮批斗.
其实面向对象有很多弊端了.不然怎么很多框架核心地方都要用汇编来写,VCL里面很多代码为了效率也是用的汇编.
当然Delphi为了不落人口实,就加入了关键字Strict.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
THuangJacky = class strict private FName:string; end; TTheFiend = class(THuangJacky) public procedure SayMyName; end;{ TTheFiend }procedure TTheFiend.SayMyName;begin ShowMessage(FName);//Error Hereend; |
这样就回归正常了,当然还有strict protected,这样就符合面向对象了.
毕竟Delphi不像Java和C#那样是纯面向对象的.
4 终结.
不知道中文怎么说的来的,好久没有看C#入门经典了.
用sealed 修饰一个类,这个类就不能继承了.
用final修饰一个方法,这个方法就不能重写了override.
看例子:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
TAbstractClass = classabstractpublic procedure Bar; virtual;end;TSealedClass = class sealed(TAbstractClass)public procedure Bar; override;end;TFinalMethodClass = class(TAbstractClass)public procedure Bar; override; final;end; |
继续驶向面向对象的彼岸的杰作.
好了,今天的主题就结束,接下来文章会介绍D2009后加入的泛型,匿名方法等.
delphi lazarus opengl
网页操作自动化, 图像分析破解,游戏开发