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

简单谈谈Ruby的private和protected

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

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

下面这段程序让我纠结了很久,Ruby中private的概念真的很奇怪。。。

class Test private
 def test_print
  puts 'test'
 end
end

class Test2 < Test
 def test_print2
  # self.test_print #=> 这里加上self就不能调用,private method `test_print' called for # (NoMethodError)
  test_print #=> 不加self就能调用
 end
end

Test2.new.test_print2 

</div>

为什么不加self的话,private也可以调用父类的方法呢?

原来在Ruby中,private和Java或者其他语言不一样,子类也可以调用,只是不能指定调用者。

翻了下《The Ruby Way》,书上说:

private:类和子类都能调用,但是private方法不能指定调用者,默认为self。
protected:类和子类都能调用,可以指定调用者。

这就解释了为什么上面的代码中,用self调用会出错,而不加self就能正确执行。

</div>

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

  • Ruby中的public、private、protected区别小结
  • Ruby 之 class 中的 private、 protected、public
  • 简单谈谈Ruby的private和protected

相关文章

  • 在Ruby中查找和执行方法
  • Ruby中使用连续体Continuation实现生成器
  • ruby的程序结构介绍
  • 浅析Ruby中的Profiling工具的用法
  • 关于Ruby on Rails视图编写的一些建议
  • ruby 学习笔记(2) 类的基本使用
  • 浅析Ruby的源代码布局及其编程风格
  • 收集的多个ruby遍历文件夹代码实例
  • PHP实现的一个保存远程文件到本地的函数分享
  • Ruby常量查找路径问题深入研究

文章分类

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

最近更新的内容

    • 详解Ruby中的instance_eval方法及其与class_eval的对比
    • Ruby on Rails中的ActiveRecord编程指南
    • 详解Ruby中的代码块对象Proc
    • Ruby中使用SWIG编写ruby扩展模块实例
    • 分析 rudy 类
    • ruby中的双等号==问题详解
    • 浅析Ruby中继承和消息的相关知识
    • 实例解析Ruby设计模式开发中对观察者模式的实现
    • 几个Ruby小技巧分享
    • 实例解析Ruby程序中调用REXML来解析XML格式数据的用法

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

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