私は保護クラスの変数で "保護された"タブで宣言されたネストされたクラスを持つ親クラスを持っています。別のユニットで私は親クラスから継承する子クラスを持っています。親クラスからpublicになっていますが、ネストされたクラスから保護されたものにアクセスしようとすると、動作しません。ネストされたクラスを継承できますか?
type
TParent = class(TObject)
protected
class var x:integer;
type
TNested = class(TObject)
protected
class var y:integer;
end;
end;
子クラスで私のコード:
x := 10; //works
y := 10; //undeclarated idenitifier 'y'.
TNested.y := 10; //undeclarated idenitifier 'y'
子クラスの宣言は次のとおりです。私は、Yにアクセスするにはどうすればよい
type
TChild = class(TParent);
?
ない、ここで質問されているもの:
は、宣言クラスのサブクラスに継承できる分類入れ子になりました。 TNestedはネストされたクラス(D2006以降で利用可能)であり、同じユニット内の別のクラスではありません。これはTParentと呼ばれます.Nested –
@Gerry、ここでの問題は、このクラスの外からいくつかのクラスのprotected要素を呼び出すことです。このクラスが存在するものはありません。外部からあるクラスの保護されたフィールドへのアクセスは、何らかの形でカプセル化に違反しています。 – smok1