博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初探Object Pascal的类(二)
阅读量:6815 次
发布时间:2019-06-26

本文共 1548 字,大约阅读时间需要 5 分钟。

类的存取级(可见性)

类有五个存取级(可见性):

  • 私有的(Private)
  • 公有的(Public)
  • 保护的(Protected)
  • 公布的(Published)
  • 自动的(Automated)

作为一个程序员,不仅要创建类而且要使用类。在团队编程中,一些程序员是类的创建者,而另一些程序员是类的使用者。要理解类存取级在类操作中的所担当的角色,首先必须理解怎样使用类。

在任何类中,都有类的公用部分,这些公用部分对外界是可存取的,同时类也有私有部分,类的私有部分是类的内部实现。作为一个设计完美的类还需要包括一部分内容,这些内容对类的使用者来说是不需要知道的,要把这部分内容从公用视图中隐藏掉。

数据抽象(Data abstraction)就是类的内部实现,对外部来说不可见。

数据抽象可以使用户避免了解一些用户不要了解的类的内容,也可以使用户避免混淆一些用户本不该产生混淆的东西。例如,当人们进入汽车并转动钥匙启动汽车时,想知道有关汽车操作的具体细节么?当然不,人们只想知道需要知道的东西。即安全驾驶汽车,在这种情况下,人们只关心类似于方向盘、脚踏板、离合器、速度计等等代表汽车与驾驶员之间接口的东西,驾驶员只需要知道这些组件的哪个符合他的需要,能正确驾驶汽车就可以了。

相反,发动机、驱动系统和电子系统就从公用视图中隐藏掉,发动机被车壳包住,只要不想看它,就可以不要看它,不需要知道有关发动机更具体的细节。想想看,如果需要了解汽车的方方面面才能驾驶汽车的话,那么驾驶汽车该多麻烦呀。同样类也保持它的内部实现私有,类的用户也不必考虑这些隐藏起来的内容。类的内部工作保持私有,但用户界面是公开的

保护存取级与私有类成员一样是不能被类用户存取的,但由本类派生的类可以存取保护类。再以汽车为例子,假设现在需要把小汽车扩展成一个大客车,为了做到这一点,就必须要了解汽车的一些基本结构,起码必须知道怎样修改驱动车杆和车架。在这种情况下,就必须得弄脏受,并且必须要了解一些汽车的结构,而这些以前对人们来说并不是很重要。

编写组件时要用公布存取级,任何组件的声明都在published段,在设计阶段它出现在Object Inspector中。

Object Pascal与类的存取有关的关键字,它们是publicprivateprotectedpublished,当声明类的时候要特别声明其成员存取级,类的声明用关键字class,看下面的例子:

type  TVehicle = class  private    CurrentGear: Integer;    Started: Boolean;    Speed: Integer;    procedure StartElectricalSystem;    procedure StartEngine;  protected    procedure StartupProcedure;  public    HaveKey: Boolean;    Start: Boolean;    procedure SetGear(Gear: Integer);    procedure Accelerate(Acceleration: Integer);    procedure Brake(Factor: Integer);    procedure Turn(Direction: Integer);    procedure ShutDown;  end;

上面的例子中只用到了三个存储级,在给定的类中可以不用全部存取级,上面的例子就没有用到公布(published)存取级,只要不想要就可以不用任何存取级。但一般起码要有公用段和私有段。

转载地址:http://aydzl.baihongyu.com/

你可能感兴趣的文章
ADO.NET 基础
查看>>
网络编程中的CAP & 有趣的存储框架(关系型、NoSQL)全图
查看>>
Web前端开发基础 第四课(认识CSS样式)
查看>>
Mysql自增字段
查看>>
Java日期时间格式转换
查看>>
linux下常见的包安装方式
查看>>
html常用标签
查看>>
bitmap==null
查看>>
jQuery.事件委托
查看>>
计算机基础(二)
查看>>
跟我学算法-tensorflow 实现logistics 回归
查看>>
mongodb sort limit和skip用法
查看>>
新的一周
查看>>
Jabber Software:Jabber-NET、agsXMPP与Wilefire[转]
查看>>
java中判断字符串是否为数字的方法的几种方法 (转载)
查看>>
iperf测试工具
查看>>
Java 并发编程基础导航
查看>>
Docker(一):Docker入门教程
查看>>
在8086中,[ idata],[bx]表示内存单元时。可能是一个字节,也可能是一个字。
查看>>
【MPI】并行奇偶交换排序
查看>>