JavaでRubyのModule的なものが欲しかった件

 下記のFooモジュールのcallメソッド内の”chain(arg,@tag,@dbg)”みたいに、
includeした先のクラスのフィールドをモジュール側でバインドしたかったのだけなんだが
Javaでどう書いてよいか解らなかった。


 ので仕方なくクラスA, B, Cに、call抽象メソッドを宣言したinterfaceを継承させて
callメソッド定義をコピペしたw;*1

module Foo
  def call(arg)
    if @chain
      @chain.each do |obj|
        obj.call arg
      end
    end
    @dbg = chain(arg,@tag,@dbg)
  end

  def add_chains arg
    @chain = arg
  end

  private
  def chain arg,tag,dbg
    if arg == tag
      dbg ? false : true
    else
      dbg
    end
  end
end

class A
  include Foo

  def initialize
    @tag = :a
    @dbg = false
    @b =B.new; @c = C.new
    
    add_chains [@b,@c]
  end

  def dbg; @dbg;  end

  def to_s
    [@dbg, @b.dbg, @c.dbg]
  end
end

class B
  include Foo

  def initialize
    @tag = :b
    @dbg = false
    @chain = nil
  end
  
  def dbg; @dbg;  end
end

class C
  include Foo

  def initialize
    @tag = :c
    @dbg = false
    @chain = nil
  end

  def dbg; @dbg;  end
end

a = A.new
a.call :a
p a.to_s                        #=> [true, false, false]
a.call :a
a.call :b
p a.to_s                        #=> [false, true, false]
a.call :a
a.call :c
p a.to_s                        #=> [true, true, true]

*1:C++だとどう書くかな?