LoginSignup
32
23

More than 5 years have passed since last update.

Ruby で 抽象クラス/メソッド を作りたい

Posted at

Ruby では抽象クラスや抽象メソッドをサポートしていないが、抽象メソッドとして使用したいメソッドで例外を投げることで、似たような役目を果たせる。

# -*- coding: utf-8 -*-
class AbstractClass
  def my_print
    puts_string
  end

  # 抽象メソッド
  def puts_string
    raise "Called abstract method: my_print"
  end
end

class SuperClassA < AbstractClass
  def puts_string
    puts "a"
  end
end

class SuperClassB < AbstractClass
  def print_string
    print "a\n"
  end
end


c = SuperClassA.new
c.my_print

c = SuperClassB.new
c.my_print
32
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
23