• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Delphi-新语法之类相关的

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

技术交流,DH讲解.

今天就把Delphi新语法中与类相关都讲了.

1 静态系列.
静态成员变量,静态方法,静态属性.
静态方法只能使用静态成员变量或者其他常量.
一个例子:

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也支持这个了.

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里面东西,继承类,外部类都可以访问.

  THuangJacky = class
  private
    FName:string;
  end;

  TTheFiend = class(THuangJacky)
  public
    procedure SayMyName;
  end;

{ TTheFiend }

procedure TTheFiend.SayMyName;
begin
  ShowMessage(FName);
end;

肯定有人大呼,违反了面向对象,然后进行一轮批斗.
其实面向对象有很多弊端了.不然怎么很多框架核心地方都要用汇编来写,VCL里面很多代码为了效率也是用的汇编.
当然Delphi为了不落人口实,就加入了关键字Strict.

  THuangJacky = class
  strict private
    FName:string;
  end;

  TTheFiend = class(THuangJacky)
  public
    procedure SayMyName;
  end;

{ TTheFiend }

procedure TTheFiend.SayMyName;
begin
  ShowMessage(FName);//Error Here
end;

这样就回归正常了,当然还有strict protected,这样就符合面向对象了.
毕竟Delphi不像Java和C#那样是纯面向对象的.

4 终结.
不知道中文怎么说的来的,好久没有看C#入门经典了.
用sealed 修饰一个类,这个类就不能继承了.
用final修饰一个方法,这个方法就不能重写了override.
看例子:

  TAbstractClass = classabstract
  public
    procedure Bar; virtual;
  end;

  TSealedClass = class sealed(TAbstractClass)
  public
    procedure Bar; override;
  end;

  TFinalMethodClass = class(TAbstractClass)
  public
    procedure Bar; override; final;
  end;

继续驶向面向对象的彼岸的杰作.

好了,今天的主题就结束,接下来文章会介绍D2009后加入的泛型,匿名方法等.

我是DH,就到这里.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Matlab画图-非常具体,非常全面发布时间:2022-07-18
下一篇:
matlab 画图发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap