[ruby-list:50374] Re: [質問] module内のclass内private関数をオーバーライド

From: "H.Hiro" <main@...>
Date: 2016-08-07 13:32:34 UTC
List: ruby-list #50374
H.Hiroです。

オーバーライドは単に、子クラスでprivateを付けたメソッドを書くだけでできます。

# 親クラス
class Sample
  def output
    puts foo
  end

  private
  def foo
    100
  end
end

Sample.new.output # => 100
# puts Sample.new.foo # 例外

# 子クラス
class MySample < Sample
  private
  def foo
    200
  end
end

MySample.new.output # => 200
# puts MySample.new.foo # 例外

なお、子クラス側でprivateを抜くと、子クラスのfooメソッドはpublicメソッドになります。

2016年8月5日 20:13  <yamataka@u08.itscom.net>:
> 山口と申します。
>
> module内のclass内private関数をオーバーライドしたいのですが、
> その記述の仕方がよく分からないので、ご教示いただければ幸いです。
>
> == 自分のプログラム
> require 'easy_upnp'
>
> …
> devices = EasyUpnp::SsdpSearcher.new(search_options).search(options[:
> search_target])
> == (自分のプログラム)
>
> == module内のclass内private関数
> Module EasyUpnp
>  Class SsdpSearcher
>  ….
>
>  private
>
>  def build_socket
>    …
>  end
> end
> == (module内のclass内private関数)
>
> module: EasyUpnp
> class : SsdpSearcher
> private関数: build_socket
> を自分のプログラム内で、オーバーライドしたいのですが…
>
>
>



-- 
H.Hiro / Maraigue
http://hhiro.net/about/
main@hhiro.net

In This Thread