《Mastering Delphi 6》 学习笔记之五
在某个类中用protected声明的变量,在本单元之外是不能够随意访问的(通过声明子类才可以访问其protected域)。《Mastering Delphi 6》中提到了一个不常用的技巧:
// Unit2
type TTest = class
protected
protectedVar : integer;
end;
// Unit1
type
TFake = class(TTest);
procedure TForm1.FormCreate(Sender:TObject);
var
Test : TTest;
begin
Test := TTest.Create;
// Test.protectedVar := 1; // not work!
TFake(Test).protectedVar := 1; // This works!
Test.Free;
end;
当然了,你也可以向TFake添加代码来实现同样的功能,但是上述方法的好处在于只需要一个占位符,而不需要为修改一个变量而大动干戈的派生一个类。在实际中这个技巧很少会用到,不过既然作者提到了,还是记以备考.