zoukankan      html  css  js  c++  java
  • 初探Object Pascal的类(二)

    类的存取级(可见性)

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

    • 私有的(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)存取级,只要不想要就可以不用任何存取级。但一般起码要有公用段和私有段。

  • 相关阅读:
    依赖注入模式与反模式
    WPF异常——某个ItemsControl与它的项源不一致
    C# 3进化的数据访问之智能的编译器
    C# 2的重大改进之可空类型
    C# 1之外:构建于坚实基础上的新特性
    C# 1的核心基础之二——类型系统
    C# 1的核心基础之一——委托
    C#进化史
    单一职责原则
    HBase简介
  • 原文地址:https://www.cnblogs.com/pchmonster/p/2306871.html
Copyright © 2011-2022 走看看