class Parent
def punish!
end
end
class Mom < Parent
end
class Dad < Parent
end
私はDad
のインスタンスを持っていますが、これをMom
のインスタンスにしたい場合、これはRubyで可能ですか?Rubyでほぼ同じクラスを交換することは可能ですか?
class Parent
def punish!
end
end
class Mom < Parent
end
class Dad < Parent
end
私はDad
のインスタンスを持っていますが、これをMom
のインスタンスにしたい場合、これはRubyで可能ですか?Rubyでほぼ同じクラスを交換することは可能ですか?
あなたは、変数のコンテキストで代替を意味する「スワップ」による場合:
parent = Mom.new
parent.punish!
parent = Dad.new
parent.punish!
はいつでも変数を再割り当てすることができます。あなたができないのは、あるクラスから別のクラスへオブジェクトのインスタンスを変えることです。作成されると、基本的にはそのクラスに固執しています。
オブジェクトの属性やオブジェクト参照が保存される他の場所にも同じ原則が適用されます。
>あなたができないことは、あるクラスから別のクラスへオブジェクトのインスタンスを変形することです。 これは私が欲しかったものです。ダン! –
ほとんどのオブジェクト指向設計パターンに反します。オブジェクトを特殊化させ、新しい動作が作成された後にそれが必要な場合は新しい動作をとる方法や、同じもののMomバージョンを生成する 'Dad.to_mom'メソッドを記述することができます。 – tadman
あなたが必要とするのは、母親とお父さんの両方が継承する親クラスです。親を予期しているオブジェクトは、母親または父親のいずれかを受け入れます。参照:多態性... –
なぜできないのですか? – 13aal
@ 13aalママとパパはおそらく独自のメソッドと属性を持つかもしれないからです。ママはどのようにお父さんになるのですか? –
交換するときは?あなたはどういう意味ですか?あなたはお母さんのオブジェクトを持っているなら、それを何かすることができますか、それを父親にすることを意味しますか? – Doon