子類可以訪問父類中的受保護函數,但父類不能訪問子類中的受保護函數。如何訪問子類中的函數?
我想保持兩個類儘可能私有。父類是一種形式,只有一次使用實例。子類中的所有函數都是靜態的,它從父類繼承。
如何從父類訪問子類中的非公共靜態方法(在另一個單元中)?
編輯:
父類(第一部):
interface
type
TParent = class
public
procedure Initialize;
protected
procedure Test; virtual;
end;
implementation
procedure TParent.Initialize;
begin
Writeln('Initializing');
Test;
end;
procedure TParent.Test;
begin
end;
子類(第二單元):
interface
uses
ParentClass;
type
TChild = class(TParent)
protected
procedure Test;override;
end;
implementation
procedure TChild.Test;
begin
Writeln('Test!');
end;
代碼(第三單元):
var c:TParent;
begin
try
c := c.Create;
c.Initialize;
c.Free;
Readln;
end;
輸出只是「初始化」。我試圖調試它,它沒有達到子類。
它永遠不會因爲你是創建類錯到達子類。將您的創建更改爲讀取C:= TChild.Create,它將起作用。 – skamradt 2009-07-20 19:02:01
您正在實例化該類錯誤。我想你之前已經被告知過。編譯器在你調用`c.Create`時沒有警告你?如果你想創建`TChild`的實例,那麼你需要調用該類的構造函數*:`TChild.Create`。 – 2009-07-20 19:30:30