野田です。

まつもと様、るびきち様、ありがとうございます。
委譲というものをそもそも知らなかったので、調べつつ試して
みました。

class A
  def initialize()
    @x = 1
  end

  @y = nil
  attr_accessor :x
  attr_accessor :y

  def method()
    4
  end
end

class B < DelegateClass(A)
  def initialize(a = A.new)
    super(a)
  end
end

b = B.new #あたかもBはAのサブクラスかのように
b.x       => 1

a = A.new
a.y = 2
b = B.new(a)  #aのインスタンス変数の値を引き継いだb
b.y       => 2

というわけで、まさしくやりたかったことができたわけですが
ここで
b.method
とすると、4が返ってきてくれずにエラーになってしまいました。
クラスBで改めて何かを記述する必要があるのでしょうか…。

> Rubyの場合はattr/attr_reader/attr_writer/attr_accessorを
> 使うとokです。

たしかそういうのがあったはずだよなぁと思いつつ、普段使って
なかったので、メソッドで書いてしまいました。^^;

> VBは使ったことはないのですが、元のソースのように
> いちいちgetter/setterをメソッドでゴリゴリ書かないと
> いけないのでしょうか?

VB.NETでは、変数を宣言するときにpublicをつけるとattr_accessorと
同じ意味合いになります。(と自分は理解しています…)

---
nonta / yo.rim.or.jp