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

2023-06-30   


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提供了更好的封装性。


相关内容:

  1. 解释一下ruby中的特殊方法与特殊类
  2. 介绍一下Ruby中的对象,属性和方法
  3. 为什么说Ruby是一种真正的面向对象程序设计语言
  4. 既然说Ruby中一切都是对象,那么Ruby中类也是对象吗
  5. 既然说Ruby中一切都是对象,那么Ruby中类也是对象吗
  6. 在C中是否有模拟继承等面向对象程序设计特性的好方法