是否可以防止公共方法被子类覆盖? class Parent def some_method #important stuff that should never be overwritten endendclass Child Parent def some_method #should not be possible to overwrite (raise an error if a child class t
class Parent def some_method #important stuff that should never be overwritten end end class Child < Parent def some_method #should not be possible to overwrite (raise an error if a child class tries to do it) end end
谢谢!
您可以使用’method_added’和’inherited’钩子来实现此目的:class Foo def self.inherited(sub) sub.class_eval do def self.method_added(name) if name == :some_method remove_method name raise Exception, "Can't override #{name} method" end end end end end class Bar < Foo end class Bar def some_method end end # => Exception: Can't override some_method method