Strict 有什么功能??
要怎么用。 怎么我Baidu 和 Google 它时,它的资料少的可怜 =.=;;×××××××××××××××××××××××××××××××××××来个顺手牵羊吧,看一看以下的网址给意见。。 谢谢。。
http://topic.csdn.net/u/20100823/10/e500dad0-3992-4fb9-b54e-fcdc081d39f7.html
要怎么用。 怎么我Baidu 和 Google 它时,它的资料少的可怜 =.=;;×××××××××××××××××××××××××××××××××××来个顺手牵羊吧,看一看以下的网址给意见。。 谢谢。。
http://topic.csdn.net/u/20100823/10/e500dad0-3992-4fb9-b54e-fcdc081d39f7.html
解决方案 »
- 从内存读取的文件乱码问题
- 关于数据区间查询的问题,请大家看看
- 还是多线程问题
- 如何求不规则边界图形的周长
- 哪位高人给我讲讲Object Pacal的类成员的问题
- 问一个简单的问题:
- 救救我吧!在线等待。马上给分。有关Access数据库于文本之间的转化.
- 初学者问题,为什么用DCOMConnection,选择了GUID后,“服务器运行失败!”
- 大家好,小弟初来乍到,请多关照!!能否推荐几本关于DELPHI网络通信编程的书籍吗,最好是电子版!先谢谢各位了!!
- 我做了一个DELPHI的工程,总有很多问题想问问各位?
- 现在论坛字体都变红色了???
- 注意啦!散分了,懂脚本的高手进啦!在线求PaxScript脚本加载DLL得到DLL中返回的对象及操作,请高手帮忙啊!
//这个类中的两个字段没有封装
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;
Strict 关键字在Delphi7以上的版本中存在
也没什么特别的,就是和class差不多,就一个不用创建和销毁、不能继承、没有作用域之类的类,很容易掌握,所以这里就不多介绍了。但是很有意思的是带参数的constructor可以通过编译,可能是为了初始化的方便吧.......
好像和Private 没有分别。。 (指Private 和 Strict Private的分别。)
气死了。。 strict 一字是从Delphi 7 开始的。。
不过真的谢谢你,也感激你的用心。。
unit test;interfacetype
TMyClass1 = class
private //未加上strict
propertyString: String;
end;
TMyClass2 = class
public
procedure MyProcedure;
end;implementationprocedure TMyClass2.MyProcedure;
var
myClass1: TMyClass1;
begin
myClass1 := TMyClass1.Create;
myClass1.propertyString := '属性一'; //现在这种情况是允许的
end;end.unit test;interfacetype
TMyClass1 = class
strict private //加上了strict
propertyString: String;
end;
TMyClass2 = class
public
procedure MyProcedure;
end;implementationprocedure TMyClass2.MyProcedure;
var
myClass1: TMyClass1;
begin
myClass1 := TMyClass1.Create;
myClass1.propertyString := '属性一'; //现在就不允许了
end;end.
注意这两段代码间的区别。你应该就明白了.
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;………………………………………………………………………………………………………………………………
TMyClass3 的 Private 是供本单元使用,对吗?
TMyClass4 的 Strict Private 是供TMyClass4 区域使用,但外部单元和区域都禁止,对吗?
是 D7 之后的,请查一下 Delphi7 之后的功能,你会得到更多有趣的东西。在同一个 Unit 下写2个Class,申明在 private 的变量是可以互相访问的。
但是加上 Strict 标识后,就不能访问了,变成真正的 private
TMyClass4 的 Strict Private 是供TMyClass4 区域使用,但外部单元和区域都禁止,对吗?………………………………………………………………………………………………………………………………