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