简单谈谈Ruby的private和protected

2023-12-05 0 303

下面这段程序让我纠结了很久,Ruby中private的概念真的很奇怪。。。

class Test private
def test_print
puts \’test\’
end
end

class Test2 < Test
def test_print2
# self.test_print #=> 这里加上self就不能调用,private method `test_print\’ called for # (NoMethodError)
test_print #=> 不加self就能调用
end
end

Test2.new.test_print2

为什么不加self的话,private也可以调用父类的方法呢?

原来在Ruby中,private和Java或者其他语言不一样,子类也可以调用,只是不能指定调用者。

翻了下《The Ruby Way》,书上说:

private:类和子类都能调用,但是private方法不能指定调用者,默认为self。
protected:类和子类都能调用,可以指定调用者。

这就解释了为什么上面的代码中,用self调用会出错,而不加self就能正确执行。

您可能感兴趣的文章:

  • Ruby 之 class 中的 private、 protected、public
  • Ruby中的public、private、protected区别小结

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Ruby 简单谈谈Ruby的private和protected https://www.u-9.cn/jiaoben/ruby/100866.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务