【发布时间】:2018-12-10 08:01:01
【问题描述】:
class User
def say_secret_with_self
self.secret
end
protected
def secret
"secret"
end
end
u = User.new
p u.say_secret_with_self # => "secret"
我听说受保护的方法只能被继承的成员访问。但以上在红宝石中是可能的。代码正确吗?
【问题讨论】:
-
self.secret可以简化为secret,因为self是隐式接收者。但是,如果secret是private,则不能使用显式接收器,即使self;你必须写secret。 -
“继承成员”应该是什么意思?另外,如果可能的话,它是一个正确的代码。
-
“是否可以在类外访问受保护的方法”——你不能从类外访问protected方法
secret班级。您访问 public 方法say_secret_with_self。受保护的方法是从在类中调用的。
标签: ruby