Ruby要改变一个对象的内部状态,唯一的简单方式就是调用它的方法。控制对方法的访问,就可以控制对对象访问。Ruby
提供了三种访问控制方式:
public 方法可以被任何人调用,没有限制访问控制。方法默认是public的(除initialize外)
protected 方法只能被定义了该方法的类或其子类的对象所调用。这个家族均可访问
private 方法不能被明确的接收者调用,其接受者只能self。这个私有方法只能在当前对象的上下文中被调用。
注意:访问控制是在程序运行的时候动态判定的,而非静态判定,只有当代码试图执行受限制的方法,才会抛出异常。
我们通过public、protected、private三个函数来为类或模块定义内的方法指定访问级别。这里有两种方式使用函数:
1、使用时没有参数
ruby 代码
- class Test
- public
- def method1
- .......
- end
- private
- def method2
- ........
- end
- protected
- def method3
- ........
- end
- end
2、通过将方法名作为参数列表传入控制访问函数来设置访问级别。
ruby 代码
- class Test
- public :method1
- private :method2
- protected :method3
- end