Delphi中的域
来源:互联网 发布:淘宝做什么 编辑:程序博客网 时间:2024/06/07 11:31
对于对象来说,一个域就象一个变量。域可以是任何类型,包括类类型。(也就是说,域可以保存对象引用。)域通常是私有的。
要定义类的域成员,只需简单地象声明变量那样声明域。所有的域声明必需出现在任何属性或方法声明之前。例如,下面的声明创建了一个叫做TNumber的类,该类中除继承自TObject的方法之外,仅有一个叫做Int的整数域成员。
type TNumber = class
Int: Integer;
end;
域的范围是静态的,即编译时对域的引用是固定的。要明白这一含义,考虑如下代码:
Type TAncestor = class
Value: Integer;
end;
TDescendant = class(TAncestor)
Value: string; //隐藏了继承得到的Value域
end;
var
MyObject: TAncestor;
begin
MyObject := TDescendant.Create;
MyObject.Value := 'Hello!'; //错误
TDescendant(MyObject).Value := 'Hello!'; //正常工作
end;
尽管MyObject保存了TDescendant的一个实例,它声明为TAncestor,但编译器仍将MyObject.Value解释为对TAncestor中声明的整数域的引用。不过,在TDescendant实例对象中仍然存在两个域,只是继承得到的Value域被新的域隐藏而已,可以通过类型转换访问前者。
要定义类的域成员,只需简单地象声明变量那样声明域。所有的域声明必需出现在任何属性或方法声明之前。例如,下面的声明创建了一个叫做TNumber的类,该类中除继承自TObject的方法之外,仅有一个叫做Int的整数域成员。
type TNumber = class
Int: Integer;
end;
域的范围是静态的,即编译时对域的引用是固定的。要明白这一含义,考虑如下代码:
Type TAncestor = class
Value: Integer;
end;
TDescendant = class(TAncestor)
Value: string; //隐藏了继承得到的Value域
end;
var
MyObject: TAncestor;
begin
MyObject := TDescendant.Create;
MyObject.Value := 'Hello!'; //错误
TDescendant(MyObject).Value := 'Hello!'; //正常工作
end;
尽管MyObject保存了TDescendant的一个实例,它声明为TAncestor,但编译器仍将MyObject.Value解释为对TAncestor中声明的整数域的引用。不过,在TDescendant实例对象中仍然存在两个域,只是继承得到的Value域被新的域隐藏而已,可以通过类型转换访问前者。
0 0
- delphi中的域
- Delphi中的域
- 截获Delphi中的异常
- delphi中的split函数
- delphi中的split函数
- Delphi中的SendKeys函数
- delphi中的流
- Delphi中的SendKeys函数
- Delphi中的对象编程
- Delphi中的线程类
- DELPHI 中的 Format 函数
- Delphi中的布尔类型
- DELPHI中的快捷方式一览
- delphi 中的Mapx 开发
- delphi中的编码转换
- Delphi中的字符串
- 用好DELPHI中的字符串
- 用好Delphi中的字符串
- Servlet简单实现文件上传功能
- equals和==的用法
- 重复认识 重新出发
- SSM项目使用springfox集成swagger
- Jsp学习之Servlet基础
- Delphi中的域
- MySQL中捕获低效SQL语句的配置以及检测SQL语句效率的方法
- java之UUID
- ajax中生成html,字符串转义问题
- 二维指针与三维指针动态分配内存
- python,request请求发生sl.SSLError
- android_studio android gradle plugin version is too old(gradle插件版本过低)解决方法
- 关于ajax
- 其他问题小记