サブクラスにだけメソッドのオーバーライドを禁止させるには
2005-11-17のコメント欄にも書いたんだけど、こちらにも書いておきます。
class C def self.method_added(name) if instance_methods(true).member?(name.to_s) and self != C raise "Can not override the method `#{name}''." end end def foo end end class D < C def foo end end
多分こんな感じないかなあ。self != Cというのが生々しくてやや気になる。