2つの基本クラスがあると仮定Container
しGizmo
ます。クラスContainer
には、クラスのインスタンス変数がありますGizmo
。
今、私はサブクラス化Container
(それを呼び出しますSubContainer
)し、サブクラス化Gizmo
(SubGizmo
)もします。のいくつかのメソッドでは、持っていないが持っているSubContainer
いくつかのプロパティにメッセージを送信する必要があります。これらのメッセージを送信できるように、ivarをオーバーライドしてクラスに含める方法はありますか?Gizmo
SubGizmo
SubGizmo
SubContainer
今のところSubGizmo
、そのようなプロパティやメソッドを使用する必要があるたびに、継承したivarをキャストすることで機能させることができます。
これが私がそのような振る舞いをしたい理由です:私はすでに動作するゲームを持っていますが、追加するモードが多いほど、それを維持するのが難しくなります。各モードで実行されるメソッドを変更/追加したい場合; 3つの異なるゲーム(コントローラーオブジェクト)に移動して変更を加える必要があります。
サブクラス化することで、メインのゲームメカニズムを基本クラスに保持し、モードごとにサブクラスを作成したいと思いました。このように、基本クラスで行った変更は、各モードに反映されます。ただし、各コントローラーとゲームオブジェクトには、異なるモード用の新しいメソッドがあり、相互にメッセージを送信します。これが私の問題の原因です。