【Ruby】抽象クラスを作る
もともとAndroidのアプリを作っていたということもあってJavaを長くやっていたのですが、最近はrubyがメイン。
で抽象クラス作ろうと思ったら、rubyにはそんなものはなかった。
親クラスのメソッドで例外を投げることで、擬似的なことはできるらしい。
class Human def eat raise 'メソッドオーバライドして' end end class Taro < Human def eat puts '食べる' end end class Jiro < Human end Taro.new.eat Jiro.new.eat
eatメソッドで例外を投げるようにした。
Taroはeatメソッドをオーバライドしているが、Jiroはしてない。
その状態でeatを呼び出す。
食べる a.rb:3:in `eat': メソッドオーバライドして (RuntimeError) from a.rb:17:in `<main>'
ほほーん。
しかし、Javaだとコンパイルの段階かEclipseがメソッド実装してないぞ的なことをエラーとして吐いてくれてた気がするのだけど、
これって呼ばれないと気がつかないんじゃない?
抽象メソッドの実装を強制するという意味ではどうなんだろうか・・・