文档章节

理解 Delphi 的类(六) - 认识类的封装

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 248
阅读 10
收藏 0
//这个类中的两个字段没有封装
  TMyClass1 = class
    FName: string;
    FAge:  Integer;
  end;

  //这个类中的两个字段封装了, 外部不能读写
  TMyClass2 = class
    private
      FName: string;
      FAge:  Integer;
    //public
  end;

  //那怎么读写? 用属性啊
  TMyClass3 = class
  private
    FName: String;
    FAge: Integer;
    procedure SetAge(const Value: Integer);
    procedure SetName(const Value: String);
  published
    property Name: String  read FName write SetName;
    property Age:  Integer read FAge  write SetAge;
  end;
  {
    现在 TMyClass3 中的两个字段: FName、FAge 和两个方法: SetAge、SetName
    都被封装在私有区(private)内, 不允许外部读写, 只能是内部使用.

    不过, private 的封装在本单元内是无效的!
    现在好了, 有了 strict 标识符.
  }

  //这个封装好了, 在 private 前加了 strict ; 现在除了自己谁也访问不了私有区.
  TMyClass4 = class
  strict private
    FName: String;
    FAge: Integer;
    procedure SetAge(const Value: Integer);
    procedure SetName(const Value: String);
  published
    property Name: String  read FName write SetName;
    property Age:  Integer read FAge  write SetAge;
  end;

  {封装的目的就是隐藏实现细节、保证数据安全}

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/01/11/1034528.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
关于C++类静态成员在Delphi中实现的思考

关于C++类静态成员在Delphi中实现的思考   没有用过Version 7 以后的Delphi版本,即便5、6、7版本,我也不能够说了解较深。因此,本文可能杞人忧天。   一、为什么需要静态成员    比如...

geek_loser
2014/11/11
0
0
VC++之MFC的五大批判

VC++之MFC的五大批判 写在本文之前算起来,我用Visual C++也有将近5年的历史了。在这期间,我也曾涉猎过Visual Basic和Delphi,但都是浅尝而止;Visual C++始终是我的主业。可是努力的成果如...

长平狐
2013/01/06
187
0
C#高性能大容量SOCKET并发(一):IOCP完成端口例子介绍

原文:C#高性能大容量SOCKET并发(一):IOCP完成端口例子介绍 例子主要包括SocketAsyncEventArgs通讯封装、服务端实现日志查看、SCOKET列表、上传、下载、远程文件流、吞吐量协议,用于测试S...

杰克.陈
2017/12/06
0
0
从Spring + Ejb + Struts2 迁移到Play 1.x 框架 之一

原来项目比较古老,前台是用delphi,后台有用Ejb做……这货已经很少有人见过了……,现在公司主要项目都转到play上,所以这个项目也重构。 第一阶段是将SSE 迁移到play,尽量不改动代码,只要...

刀狂剑痴
2015/08/27
129
0
Java语言学习(六):面向对象进阶

上篇博客中我们初步认识了Java面向对象编程,下面进一步学习下。 面向对象编程三大特性:封装、继承、多态。 封装隐藏了类的内部实现机制,对外界而言它的内部细节是隐藏的,暴露给外界的只是...

海岸线的曙光
07/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL Replication 梳理详解

MySQL Replication 1 MySQL5.5以前的复制 异步、SQL线程串行化回放 MySQL内建的复制功能是构建大型,高性能应用程序的基础。主服务器将更新写入二进制日志文件,从服务器重新执行一遍来实现的...

PeakFang-BOK
16分钟前
1
0
.NET Core & ConsoleApp & appsettings.json

准备 Visual Studio 2017 .NET Core 2.1 新建控制台应用(.NET Core) 默认的 Program.cs // Program.csusing System;namespace ConsoleApp1{ class Program { static voi......

taadis
26分钟前
1
0
结合lucene谈谈日期的压缩问题

说起日期值的压缩,一般容易想到的办法是将日期转化成long类型,然后再通过变长整形进行压缩,我算了一下按照毫秒来算最多占用5个字节(可以通过“谈谈变长整型”中的表查看),确实节省了部...

FAT_mt
今天
1
0
导出私有函数与私有变量

在Go语言中, package中包含函数与变量通过identifier的首字母是否大写来决定它是否可以被其它package所访问。当一个函数或变量名称为小写字母时,默认是无法被其他package引用的. 有没有办法...

xtof
今天
1
0
new Date() 在Safari下的 Invalid Date问题

问题复现 var timeStr = '2018-11-11 00:00:00';var time = new Date(timeStr);// error: Invalid Date... 在safari浏览器下,time为Invalid Date, 导致后面代码执行错误; 其他浏览器诸...

会写代码的husky
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部