技术交流,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 - 新语法之类相关的相关推荐

  1. Delphi - 新语法介绍之For In

    技术交流,DH讲解. 哈哈,Java和C#里面的For In用起来真爽,我们Delphin也不用眼红了,从D2005起,Delphi里面也有这个功能了. 首先我们要知道哪些类型可以用For In吧,下 ...

  2. 商城项目介绍以及ES6的新语法

    0.学习目标 了解电商行业 了解乐优商城项目结构 能独立搭建项目基本框架 能参考使用ES6的新语法 1.了解电商行业 学习电商项目,自然要先了解这个行业,所以我们首先来聊聊电商行业 1.1.项目分类 ...

  3. ES6新语法及vue基础

    https://www.angularjs.net.cn/ es6新语法:(多看多用) 1 字符串方法 //字符串方法 includes包含// let str="ijahsdjkhasd& ...

  4. .NET中那些所谓的新语法之四:标准查询运算符与LINQ

    开篇:在上一篇中,我们了解了预定义委托与Lambda表达式等所谓的新语法,这一篇我们继续征程,看看标准查询运算符和LINQ.标准查询运算符是定义在System.Linq.Enumerable类中的50 ...

  5. python海象运算符_【译】Python3.8新语法:海象运算符

    作者:Brett Slatkin 翻译:老齐 与本文内容有关的图书:<跟老齐学Python:轻松入门>.<Python大学实用教程> Python3.8引入了一种叫做海象运算符 ...

  6. PHP7 RC7 Release对比PHP5.6快速排序20000数据性能体验以及新语法尝鲜

    最近Zend的PHP7已经 处于最后的BUG修复阶段,目前 已经更新RC7,对于Zend官方的说法PHP7的性能大约相比PHP5系列版本 提高2倍以上,增加了一些新的语法,摒弃了PHP5的一些影响性能 ...

  7. 第十六节:语法总结(3)(C#6.0和C#7.0新语法)

    一. C# 6.0 新语法 1. 自动属性初始化可以赋值 1 /// <summary> 2 /// 自动属性初始化 3 /// </summary> 4 public cla ...

  8. 生物版AlphaGo发威!DeepMind出手抗疫:预测多种新冠病毒相关蛋白结构

    乾明 发自 凹非寺  量子位 报道 | 公众号 QbitAI 疫情全球化蔓延之下,世界最顶级的AI研究机构加入抗疫阵列. DeepMind利用其最新版本的AlphaFold系统,发现几种与新冠病毒(S ...

  9. 1、ASP.NET MVC入门到精通——新语法

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特 ...

最新文章

  1. CMD如何生成文件夹目录结构
  2. 压缩流--DeflateStream和GZipStream
  3. Gson简要使用笔记
  4. centos 7 修复mysql,快速修复Centos7 系统时区!
  5. Nginx URL重写(rewrite)配置及信息详解
  6. mysql sql 去除重复行_mysql – sql自连接表删除重复行
  7. PyTorch模型部署:pth转onnx跨框架部署详解+代码
  8. 关于IE6下用Jquery attr('onclick')问题
  9. 课堂练习--最大子数组和
  10. Python基础灬函数补充(作用域,迭代器,生成器)
  11. Linux内核部件分析 更强的链表klist
  12. java linq select_Java 8是否还需要LINQ?还是已经比LINQ 更好?
  13. WPS2005 For Linux 序列号
  14. 公众号吸粉实操之qq群吸粉
  15. Google版 “AirDrop” 姗姗来迟,万能联播缘何超越Nearby Sharing?
  16. 【产品经理】大学生英语拓展
  17. Chrome安装VUE插件
  18. JS实现仿新浪微博大厅和腾讯微博首页滚动效果_前端开发
  19. 操作系统实验四 进程运行轨迹的跟踪与统计(哈工大李治军)
  20. 测试工程师个人年终总结

热门文章

  1. 历史文件夹_Win10备份文件教程:备份到OneDrive,文件历史记录
  2. iphone11系列的尺寸_最强新款iPhone11系列选购指南,哪一款才是最适合自己的?...
  3. python天天向上每十天休息一天_Python基础第十天
  4. 垃圾,还用汇编写单片机程序?
  5. 天线的起源与发展历史
  6. 快讯|MIT遥控机器人;日本推出带摄像头的智能AI马桶;德国在线零售商Zalando引进拣货机器人等...
  7. config database.php,CodeIgniter配置之database.php用法实例分析
  8. linux中asm数据库卸载教程,删除Linux非rac环境下的ASM实例
  9. mysql存中文_mysql数据库存储中文数据的解决办法
  10. 如何编译 php,如何编译安装一个php模块