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