• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >ruby > Ruby中的public、private、protected区别小结

Ruby中的public、private、protected区别小结

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了protected public,c public protected,private和protected,c private protected,ruby private等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

重点关注private与protected

public

默认即为public,全局都可以访问,这个不解释

private

C++, “private” 意为 “private to this class”, 但是Ruby中意为 “private to this instance”.
意思是:C++中,对于类A,只要能访问类A,就能访问A的对象的private方法。
Ruby中,却不行:你只能在你本对象的实例中访问本对象的private方法。
因为Ruby的原则是“private意为你不能指定方法接收者”,接收者只能是self,且self必须省略!
所以Ruby中子类可以访问父类的private方法。但self.private_method是错的。

protected

可以在本类或子类中访问,不能在其它类中访问。

测试代码(public均可访问,代码略)

class A
 def test
  protected_mth
  private_mth
 
  self.protected_mth
  #self.private_mth   #wrong
 
  obj = B.new
  obj.protected_mth
  #obj.private_mth    #wrong
 end
 
 protected
 def protected_mth
  puts "#{self.class}-protected"
 end
 
 private
 def private_mth
  puts "#{self.class}-private"
 end
end
 
class B < A
 def test
  protected_mth
  private_mth
 
  self.protected_mth
  #self.private_mth   #wrong
 
  obj = B.new
  obj.protected_mth
  #obj.private_mth    #wrong
 end
end
 
class C
 def test
  a = A.new
  #a.protected_mth     #wrong
  #a.private_mth      #wrong
 end
end
 
A.new.test
B.new.test
C.new.test
</div>


注:ruby的访问控制不同于java,没有包的区别。
其它包中的类只要引用目标类,和目标类同包下类访问控制规则相同。

</div>

您可能想查找下面的文章:

  • Ruby中的public、private、protected区别小结

相关文章

  • 深入理解Ruby中的block概念
  • Ruby中的数组和散列表的使用详解
  • Ruby实现的最长公共子序列算法
  • 更改RubyGem安装源
  • RVM安装和使用总结笔记
  • Ruby元编程小结
  • 在Ruby中创建和使用哈希的教程
  • ruby 变量
  • Ruby简明教程之数组和Hash介绍
  • 详解Ruby中的块的知识

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 使用Ruby实现简单的事物驱动的web应用的教程
    • ruby安装gem包失败的通用解决方法
    • Ruby中调用执行shell命令的6种方法
    • Ruby中使用Block、Proc、lambda实现闭包
    • 淘宝网提供的国内RubyGems镜像简介和使用方法
    • rails "No route matches" 错误的解决方法
    • ruby 变量
    • Ruby中实现统计文件行数、单词数和字符数
    • ruby环境中自动编译sass教程
    • 浅析Ruby的源代码布局及其编程风格

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有