Ruby

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

More than 5 years have passed since last update.

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