设为首页收藏本站

嘻皮客娱乐学习网

 找回密码
 中文注册
搜索
打印 上一主题 下一主题
开启左侧

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

[复制链接]
跳转到指定楼层
楼主
发表于 2014-11-30 20:36:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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提供了更好的封装性。
回复

使用道具 举报

小黑屋|手机版|嘻皮客网 ( 京ICP备10218169号|京公网安备11010802013797  

GMT+8, 2024-5-15 00:27 , Processed in 0.173109 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表