개인 방법 (단위) 개인처럼 대신 Private
의, 그들 Protected해야한다. 필요한 것은 보호 된 방법입니다. 보호 된 메서드는 기본 클래스에서 상속하는 모든 클래스에서 액세스 할 수 있습니다. 사용자 코드는 클래스에 상속되지 않으면 액세스 할 수 없습니다.
unit A;
interface
type
TBase = class(TObject)
private
procedure PrivateTest;
protected
procedure ProtectedTest;
end;
implementation
procedure TBase.PrivateTest;
begin
end;
procedure TBase.ProtectedTest;
begin
end;
end.
#
unit B;
interface
uses
A;
type
TDerived = class(TBase)
public
procedure Test;
end;
implementation
procedure TDerived.Test;
begin
// PrivateTest; // compile error
ProtectedTest; // accepted by the compiler
end;
end.
#
unit C;
interface
uses
A, B;
implementation
var
Base: TBase;
Derived: TDerived;
initialization
Base := TBase.Create;
Derived := TDerived.Create;
// Base.PrivateTest; // compile error
// Base.ProtectedTest; // compile error
// Derived.PrivateTest; // compile error
// Derived.ProtectedTest; // compile error
Derived.Test; // accepted by the compiler
Derived.Free;
Base.Free;
end;
델파이 2006에는 엄격한 수정 자도 있습니다 (엄격한 전용). 이 수정자를 사용하면 C++와 같은 개인/보호 된 작업 (엄격한 개인 - 클래스 외부의 아무도 메소드에 액세스 할 수 없으며 엄격하게 보호 됨 - 클래스와 서브 클래스 만 메소드에 액세스 할 수 있음). –
Tobias, 2006 년이 아니라 Delphi 2005입니다. –