我有一个简单的Ruby基类,其中所有方法都需要具有受保护的可见性。当另一个类继承基类并调用其方法时,就会出现问题。 Ruby解释器停止并告诉我它解释的第一个方法是受保护的方法,并告诉我类不能调用它。这是我的代码:
class Base
protected
def methodOne
# method code
end
def methodTwo
# method code
end
end
当子类从基类调用方法时会发生错误。
Subclass.new.methodOne
我很明显错过了Ruby的可见性/继承模型。任何帮助表示赞赏!
答案 0 :(得分:3)
您只能调用自己的和继承的受保护方法。
您正在做的是创建另一个新对象(使用Base.new
)并在其上调用methodOne
。您需要执行self.methodOne
示例:
class Extended < Base
def new_method
self.methodOne # calling method one defined in Base
end
end