たとえば、すでにどこかで定義されているクラスをオーバーライドしSystem.Classes.TOriginalClass
、元のクラス名を保持したいとします。私はそれを次のように定義する必要があることを知っています:
type
TOriginalClass = class(System.Classes.TOriginalClass)
...
end;
このカスタムオーバーライドされたクラスを、それが宣言されたのと同じユニット内に実装したい場合、それを使用したいすべての場所がこのクラスを宣言した場所の下にある限り、問題はありません。
しかし、この置換クラスを別のユニットで使用したいとします。System.Classes
は非常に一般的なユニットであり、他のほとんどすべてのユニットで使用されています。System.Classes
ユニットと、このオーバーライドされたバージョンを作成したユニットの両方を使用できるようにしたいので、それを呼び出しましょうMyClasses
。
他のユニットでは、次のように、宣言に完全なユニット/クラスを含めることでこれを達成できることを知っています。
type
TMyClass = class(MyClasses.TOriginalClass)
...
end;
しかし、それは目的全体をかなり無効にします。なぜならMyClasses.
、の前に接頭辞として含めることを余儀なくされるからTOriginalClass
です。TOriginalClass
私がやりたいのは、最初に宣言された場所を気にする必要がなく、このように宣言することです...
type
TMyClass = class(TOriginalClass)
...
end;
...それがの代わりにTMyClass
継承されることを確認しながら。MyClasses.TOriginalClass
System.Classes.TOriginalClass
これは、uses句でこれら2つのユニットのそれぞれを宣言する順序で構成されていると確信しています。たとえば、を使用System.Classes
する前にを使用しMyClasses
ます。しかし、これは可能であると思われますか?これを行うとき、私は何に注意する必要がありますか?
PS-TOriginalClass
私は実際のクラスではないことを知っています。最初にで宣言されたクラスを示すためSystem.Classes
にそれを使用しています。同じことが、どのユニットのどの元のクラスにも当てはまります。