0
我有一个简单的Ruby基类,其中所有方法都需要保护可见性。当另一个类继承基类并调用它的方法时,会出现问题。 Ruby解释器停止并告诉我它解释的第一个方法是受保护的方法,并告诉我该类不能调用它。这里是我的代码:Ruby受保护的方法问题
class Base
protected
def methodOne
# method code
end
def methodTwo
# method code
end
end
当子类从基地调用一个方法时发生错误。
Subclass.new.methodOne
我明显错过了Ruby的可见性/继承模型。任何帮助表示赞赏!
我在我原来的职位是错误的。呼叫线路是Extended.new.methodOne。使用你的答案,我只是在Extended中创建了一个构造函数,并且像你所建议的那样调用了self.methodOne。我觉得很奇怪Extended.new.methodOne会调用一个错误。 – webren 2011-02-27 21:12:30
如果您将方法的调用看作内部(使用您自己的方法)和外部(使用其他对象的方法)。外部你只能调用公共方法。内部可以调用所有公共方法,所有你自己的私有方法(但不是那些继承的方法)以及所有你自己的和继承的受保护方法。 – 2011-02-28 09:30:48