delphi的Public,Private,Protected,Published作用域【转】

摘要:
与C++类似,但可见性不同,很容易混淆私有和受保护。受保护的对象仅对其自身及其子类可见。在同一单元格中可以看到Private。1.Private用于声明对象方法和字段具有有限的可见性?2.protected表示对象方法和字段的可见性有限;它只能由当前类及其子类访问。
【转自】http://hi.baidu.com/tony060156/blog/item/b4e81528e4080b80023bf644.html

关于Class里的成员:
1.Public,
2.Private,
3.Protected,
4.Published,
以上四个class 的成员指令,它们的功用是什么??要怎么用和什么时候输入?怎样用?
和C++是差不多的、可见性不同、比较容易弄混的就是private和protected了、protected是只有自己和子类可见、private是同单元可见

1.private用于声明对象方法和字段具有有限的可见性,在申明类的单元外这个类不能被访问;。
2.protected 用于表示对象方法和字段具有有限的可见性,只能被当前的类和他的子类访问,只用同一个单元中的类,子类和任何代码可以访问protected成员;
3.public 用于表示可以被程序代码中的任意部分访问的数据和对象方法.
4.Published是发布的,发布的属性可以在属性列表中看到

Private: 私有的,只能自己使用或者是同一单元的子类使用,实例不可使用
Protected,保护的,自己和子类均可使用,实例不可访问的
Public,公共的,具体实例可以访问和使用
Published,发布的,主要是针对元件定义的类型,可以在属性列表中可见,使用同Public

 

public和published差不多,区别仅在于Published的成员可以被Delphi开发环境的Object   Inspector所显示,因此一般将属性或事件声明于Published段

public   和published都是公有的,published又称发行成员,是说他定义的变量能在设计期访问,也就是在Object   Inspector中显示可供设计期修改.

一般来说,你拖放到窗体上的控件的代码申明,控件的事件代码的申明都是在Pubished里面,自己申明的东西不要放在Published下面。

我补充一下:  
      published:  
            对象的这一部分将产生运行期类型信息(RTTI),  
            并使程序的其他部分能访问这部分,  
            object   inspector   用RTTI   来产生属性的列表.

private:只有自己类中的函数或友类中的函数可以访问private级别的数据,不允许类的对象和其子类访问
翻译后意思也不一样!  
  私有  
  公用  
  保护  
  发布

DELPHI初始化元件的属性时,是按published的顺序来的。因此,如果属性之间存在依赖(比如某属性的Get和Set方法会引用另外的属性),那么请根据依赖关系来编写published中的顺序。否则,可能在属性初始化时出错。
public:是公共的,允许任何函数,类,对象访问,一般来说操作private数据的函数定义成public级别,提供对象与外部的接口;
protected:是保护的,对于本类族是公开的,其它的类是私有的(即其它的类不可见)

免责声明:文章转载自《delphi的Public,Private,Protected,Published作用域【转】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java中为什么可以用一个char(两个字节)表示一个中文字符关于出现“对不起,您安装的不是正版应用...”的解决方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

enum class的基于namespace的实现

之前实现的枚举类enum class虽然达到了当时期望的功能,但现在在用的时候出现了一些问题。比如新定义了一个Token的类,定义如下, class Token { public: Token(){} Token(int tp, string tx) { type = tp; text = tx; }...

Javascript 异步加载详解

本文总结一下浏览器在 javascript 的加载方式。 关键词:异步加载(async loading),延迟加载(lazy loading),延迟执行(lazy execution),async 属性, defer 属性   一、同步加载与异步加载的形式   1. 同步加载 我们平时最常使用的就是这种同步加载形式: <script src="ht...

【JUnit】junit4的几个assert方法

版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/zhtao01/article/details/27858225 在静态类junit.framework.Assert或者静态类org.junit.Assert中存在下面几个方法 1.assertEquals()方法。用来查看对象中存的值是否是...

Web前端开发最佳实践(9):CSS代码太太乱,重复代码太多?你需要精简CSS代码

前言 提高网站整体加载速度的一个重要手段就是提高代码文件的网络传输速度。之前提到过,所有的代码文件都应该是经过压缩了的,这可提高网络传输速度,提高性能。除了压缩代码之外,精简代码也是一种减小代码文件大小的手段。以下将讨论CSS代码相关的代码精简方案。 定义简洁的CSS规则 CSS的每条规则中都包含了规则的属性及属性值。定义简洁的CSS规则主要是指合并相关规...

c#原理:c#代码是怎么运行的、实例化时发生了什么、静态对象(类、方法、变量、属性)的原理

c#代码是怎么运行的:  c#代码=》编译器=》DLL/EXE=>CLR/JIT=>机器码 最后到二进制的时候是这么执行的??? 要知道更具体细节,可以参考书籍《CLR VIA C#》 C#基础篇之C#和 .Net框架的概念和运行原理 深度理解C# 的执行原理 CPU(中央处理器) - 百度百科   转自:c#编译后是怎么运行的 1..NET语...

Hadoop--mapreduce编程实例1

前提准备: 1.hadoop安装运行正常。Hadoop安装配置请参考:Ubuntu下 Hadoop 1.2.1 配置安装 2.集成开发环境正常。集成开发环境配置请参考 :Ubuntu 搭建Hadoop源码阅读环境 MapReduce编程实例: MapReduce编程实例(一),详细介绍在集成环境中运行第一个MapReduce程序 WordCount及代码分...