生活随笔
收集整理的這篇文章主要介紹了
Delphi - 新语法之类相关的
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
技術交流,DH講解.
今天就把Delphi新語法中與類相關都講了.
1 靜態系列.
靜態成員變量,靜態方法,靜態屬性.
靜態方法只能使用靜態成員變量或者其他常量.
一個例子:
typeTMyClass = classstrict privateclass varFX: Integer;strict protected class function GetX: Integer; static;class procedure SetX(val: Integer); static;publicclass procedure StatProc(s: String); static;class property X: Integer read GetX write SetX;end;TMyClass.X := 17;
TMyClass.StatProc('Hello');
靜態屬性的存取方法也要是靜態的.
我們可以看到就是一個class關鍵字.
2 內部類.
內部類這個概念,我最早是在張孝祥的<<Java就業培訓教程>>看見的.現在Delphi也支持這個了.
typeTOuterClass = classstrict privateMyField: Integer;publictypeTInnerClass = classpublicMyInnerField: Integer;procedure InnerProc;end;procedure OuterProc;end;procedure TOuterClass.TInnerClass.InnerProc;
begin...
end;
至于這個有什么用,我也不是很清楚的.應該就是可見性上面的區別.
3 可見性.
在Delphi里面private里面東西,繼承類,外部類都可以訪問.
THuangJacky = classprivateFName:string;end;TTheFiend = class(THuangJacky)publicprocedure SayMyName;end;{ TTheFiend }procedure TTheFiend.SayMyName;
beginShowMessage(FName);
end;
肯定有人大呼,違反了面向對象,然后進行一輪批斗.
其實面向對象有很多弊端了.不然怎么很多框架核心地方都要用匯編來寫,VCL里面很多代碼為了效率也是用的匯編.
當然Delphi為了不落人口實,就加入了關鍵字Strict.
THuangJacky = classstrict privateFName:string;end;TTheFiend = class(THuangJacky)publicprocedure SayMyName;end;{ TTheFiend }procedure TTheFiend.SayMyName;
beginShowMessage(FName);//Error Here
end;
這樣就回歸正常了,當然還有strict protected,這樣就符合面向對象了.
畢竟Delphi不像Java和C#那樣是純面向對象的.
4 終結.
不知道中文怎么說的來的,好久沒有看C#入門經典了.
用sealed 修飾一個類,這個類就不能繼承了.
用final修飾一個方法,這個方法就不能重寫了override.
看例子:
TAbstractClass = classabstractpublicprocedure Bar; virtual;end;TSealedClass = class sealed(TAbstractClass)publicprocedure Bar; override;end;TFinalMethodClass = class(TAbstractClass)publicprocedure Bar; override; final;end;
繼續駛向面向對象的彼岸的杰作.
好了,今天的主題就結束,接下來文章會介紹D2009后加入的泛型,匿名方法等.
我是DH,就到這里.
轉載于:https://www.cnblogs.com/huangjacky/archive/2009/12/11/1622186.html
總結
以上是生活随笔為你收集整理的Delphi - 新语法之类相关的的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。