2016-04-18 4 views
0
class Parent 
def punish! 
end 
end 

class Mom < Parent 
end 

class Dad < Parent 
end 

私はDadのインスタンスを持っていますが、これをMomのインスタンスにしたい場合、これはRubyで可能ですか?Rubyでほぼ同じクラスを交換することは可能ですか?

+0

なぜできないのですか? – 13aal

+0

@ 13aalママとパパはおそらく独自のメソッドと属性を持つかもしれないからです。ママはどのようにお父さんになるのですか? –

+0

交換するときは?あなたはどういう意味ですか?あなたはお母さんのオブジェクトを持っているなら、それを何かすることができますか、それを父親にすることを意味しますか? – Doon

答えて

2

あなたは、変数のコンテキストで代替を意味する「スワップ」による場合:

parent = Mom.new 
parent.punish! 

parent = Dad.new 
parent.punish! 

はいつでも変数を再割り当てすることができます。あなたができないのは、あるクラスから別のクラスへオブジェクトのインスタンスを変えることです。作成されると、基本的にはそのクラスに固執しています。

オブジェクトの属性やオブジェクト参照が保存される他の場所にも同じ原則が適用されます。

+0

>あなたができないことは、あるクラスから別のクラスへオブジェクトのインスタンスを変形することです。 これは私が欲しかったものです。ダン! –

+0

ほとんどのオブジェクト指向設計パターンに反します。オブジェクトを特殊化させ、新しい動作が作成された後にそれが必要な場合は新しい動作をとる方法や、同じもののMomバージョンを生成する 'Dad.to_mom'メソッドを記述することができます。 – tadman

+0

あなたが必要とするのは、母親とお父さんの両方が継承する親クラスです。親を予期しているオブジェクトは、母親または父親のいずれかを受け入れます。参照:多態性... –

関連する問題