Прежде чем читать в этой статье, я думал, что управление доступом в Ruby работает следующим образом:
-
public
- доступ к любому объекту (например,Obj.new.public_method
) -
protected
- доступен только из самого объекта, а также для любых подклассов -
private
- тот же, что и защищенный, но метод не существует в подклассах
Однако оказывается, что protected
и private
действуют одинаково, за исключением того факта, что вы не можете вызвать методы private
с явным приемником (т.е. self.protected_method
работает, но self.private_method
doesn " т).
В чем смысл этого? Когда есть сценарий, когда вы не хотите, чтобы ваш метод вызывался с явным приемником?