Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗?

匿名网友 匿名网友 发布于: 2015-08-30 00:00:00
阅读 136 收藏 0 点赞 0 评论 0

Ruby中的保护方法和私有方法与一般面向对象程序设计语言的概念有所区别,保护方法的意思是方法只能方法只能被定义这个方法的类自己的对象和子类的对象访问,私有方法只能被对象自己访问。

class Test
 def method1    #默认为公有方法
 …
 end

 protected  #保护方法
 def method2
 …
 end
 
 private  #私有方法
 def method3
 end

 public 
 def test_protected(arg) #arg是Test类的对象
  arg.method2   #正确,可以访问同类其他对象的保护方法
 end

 def test_private(arg) #arg是Test类的对象
  arg.method3  #错误,不能访问同类其他对象的私有方法
 end
end

obj1 = Test.new
obj2 = Test.new
  
obj1.test_protected(obj2)
obj1.test_private(obj2) 

可以看到,和C++/Java相比,Ruby提供了更好的封装性。

评论列表
文章目录