From: Nonta Date: 2005-08-19T23:33:47+09:00 Subject: [ruby-list:41043] 親クラスのインスタンスを元に子クラスのインスタンスを作りたい 野田と申します。 仕事中に少しつっかかったところがありまして投稿いたします。 class A def initialize(a = nil) if a != nil then self = a #(*) # @x = a.get() #(**) end end def set(x) @x = x end def get() return @x end end class B < A def initialzie(a) super(a) end end a = A.new a.set(1) b = B.new(a) b.get() => 1が返ってきて欲しい 当然、(*)の箇所でコンパイルエラーになるのですが、 意味合いとしては、「親クラスで生成したインスタンスを 子クラスのインスタンスの親インスタンス(?)にしたい」 とでもいいますでしょうか。 もちろん、上記の例では(*)の代わりに(**)を使えば実現する かと思うのですが、インスタンス変数が多いとちょっと面倒に なってしまいます。 質問の内容は、このような発想はそもそもオブジェクト指向上 ありえないのでしょうか。子インスタンスが親クラスを制御し ようとしているような感じですし。 それとも、もしこのような発想がありえるとすると、Rubyで 表現可能なのかな、ということです。 実際に仕事ではVB.NETで書いていたのですが、本質的にはRubyでも 同じだと思いまして、こちらに投稿いたしました。 つたない日本語で申し訳ありませんが、ご理解いただけた方 なにかご助言をいただけないでしょうか。 --- nonta@yo.rim.or.jp