コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Rubyで継承を強制するためにNotImplementedErrorを活用する

絶対継承後のクラスは実装しろ!!!いいな!!! みたいなJavaでいうところのInterfaceみたいなものを実装したいとき

やりたいこと

  • 子クラスで必ず実装させる義務が発生するメソッドを作りたい。

やりかた

  • 親クラスで引き継がせたいメソッドで NotImplementedError をraiseする

▼親クラス

class Oya
  def say
    NotImplementedError 
  end
  
  def has_a_method
    # 共通で使うメソッドはそのまま実装
    return "共通で使うメソッドだよ"
  end
end

▼子クラス

class Ko < Oya
  def say
    p "私は" + has_a_method
  end
end

参考サイト