- class Test
- def method1 #默认为公有方法
- puts "This is a public method"
- end
- protected #保护方法
- def method2
- puts "This is a protected method"
- end
-
- private #私有方法
- def method3
- puts "This is a private method"
- end
- public
- def test_protected(arg) #arg是Test类的对象
- arg.method2 #正确,可以访问同类其他对象的保护方法
- end
- def test_private(arg) #arg是Test类的对象
- #arg.method3 #错误,不能访问同类其他对象的私有方法
- puts "don't call obj's private method"
- end
- end
- obj1 = Test.new
- obj2 = Test.new
-
- obj1.test_protected(obj2)
- obj1.test_private(obj2)
在C++中有对象不能访问类的私有方法,因此有了友元。
Ruby和C++/Java的一个显著不同是存取控制是程序运行时决定的而不是静态绑定的。所以只有在访问一个受限制的方法时才会产生运行时错误。
阅读(664) | 评论(0) | 转发(0) |