ここで何をしようとしているのかよくわかりません。投稿したすべてのコードはインスタンス変数で機能します。インスタンス変数はクラスごとではなくオブジェクトごとであるため、「親クラスの値が必要です」と言ったときの意味がわかりません。
私があなたのコードで注意することがいくつかあります:
- 基本クラスはサブクラスを認識してはなりません。したがって、ベースがサブクラスを使用するため、で
B
オブジェクトを作成することは適切ではありません。A#initialize
B#initialize
とはまったく異なる動作でクラスを上書きしていますA#initialize
。パラメータリストを変更することもできます。あまり良いことでもありません。サブクラスのオブジェクトは、そのスーパークラスのオブジェクトと同じように動作する必要があります。
- メソッドが呼び出されることはないため、呼び出すとき
B.new('myname')
に変数@name
が割り当てられることA#initialize
はありません。super(:name => name)
(スーパークラスを実行するために)を呼び出すか、で直接initialize
割り当てる必要があります@name
B#initialize
- 定義すると
@name
、すべてのインスタンスメソッドがその値を使用できるようになります。親/スーパークラスで定義されているものを含みます。
なぜここで継承を使用しているのかよくわかりませんが、それはあなたが望んでいるものではないと感じています。2つの異なるものに対して2つのクラスがある場合、継承が関係することはありません。コードを再利用する場合は、Rubyのミックスイン機能を確認するか、再利用したい動作を持ついくつかの「小さい」オブジェクトで複雑なオブジェクトを作成します。