`
hanqingwxf2008
  • 浏览: 51301 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

ruby 中的 方法调用作用域

阅读更多

因此private和protected的在ruby当前和Java的定义有很大的区别:

1、在不同对象实例当中的作用域不同
Java当中,不管private还是protected的方法,都可以被同一个类别的其他对象实例调用;
Ruby当中,private方法不能被同一个类别的其他对象实例调用;

2、在类继承关系当中的作用域不同
ruby当中,不管private还是protected方法,都可以被子类继承;
Java当中,private方法不能被子类继承;

这种方法调用的差异,也许来自于不同的面向对象理念:Java的面向对象来自C++,强调类继承关系,所以方法调用限定类继承的层次结构当中的作 用域,却不强调对象实例作用域;而ruby的面向对象来自smalltalk,即使是类别也是对象,因此方法调用作用域都是针对对象实例调用来设置的。

 

 

private 但是Ruby中意为 “private to this instance”. 

你只能在你本对象的实例中访问本对象的private方法。

因为Ruby的原则是“private意为你不能指定方法接收者”,接收者只能是self,且self必须省略!

所以Ruby中子类可以访问父类的private方法。但self.private_method是错的。

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

在其他类中调用本类方法也不行

分享到:
评论

相关推荐

    Ruby-Functo是ruby中的可组合方法对象

    闭包可以捕获其定义时的上下文,使得它们在稍后的时间点依然能够访问到那些变量,即使它们的生命周期已经超出原始的作用域。 Functo库的关键特性包括: 1. **可组合性**:通过Functo,你可以将多个小的函数组合成...

    ruby中文教程(源代码)

    它们各自有不同的命名规则和作用域。 - 数据类型:Ruby是动态类型语言,主要数据类型包括字符串(`String`)、整数(`Integer`)、浮点数(`Float`)、布尔值(`TrueClass`和`FalseClass`)、数组(`Array`)、哈希...

    ruby语言帮助文档(简体中文)

    块可以与方法一起使用,形成闭包,这样就可以在方法中捕获并操作外部作用域的变量。 6. **元编程**:Ruby的元编程能力非常强大,允许在运行时修改和创建类和对象。这得益于Ruby的反射API和`send`方法,可以动态地...

    Ruby - Ruby for Rails

    - **作用域规则**:深入理解 Ruby 中的作用域规则,包括局部作用域、类作用域等。 - **块与闭包**:介绍块的概念及其与闭包的区别,以及如何在 Ruby 中使用它们。 #### 2.5 控制流技术 - **条件语句**:讲解 if、...

    Ruby中文教程及相关源代码

    3. **函数与方法**:Ruby中的函数定义和调用,块和 Proc 对象,以及方法的定义、重载和作用域。 4. **面向对象编程**:Ruby是纯面向对象的语言,讲解类的定义、继承、模块(Module)的使用,以及对象创建和消息传递...

    Ruby语言中文教程

    Ruby中的类还可以继承,通过`操作符定义子类,并可以使用`super`关键字调用父类的方法。 三、控制结构 Ruby提供了多种控制结构,如条件语句(if/else, case)、循环(for, while, until, each)和流程控制语句...

    动态加载的艺术:Ruby中require与load的区别

    - **局部作用域**:通过 `load` 加载的文件将在调用它的局部作用域中执行,这有助于保持作用域的一致性。 - **指定路径**:必须提供文件的完整路径或相对路径。 #### `require` 与 `load` 的核心区别 虽然 `...

    Ruby语言中文教程.rar

    - 闭包:Ruby的块具有闭包特性,能记住其定义时的作用域,即使在其他作用域中也能访问。 4. **元编程** - 动态方法:Ruby可以在运行时动态地添加、修改或删除方法。 - `send`方法:用于在运行时调用方法,可以...

    Ruby In a Nutshell

    - 闭包是指能够访问其定义时作用域的变量的块,即使在块被调用时该作用域已不存在。 8. ** Proc和Lambda** - `Proc`和`lambda`都是Ruby的代码对象,可以存储和传递代码。 - `Proc`更灵活,允许在块末尾隐式返回...

    Ruby 基础语法 视频教程1

    - **全局变量**(Global Variables):以`$`开头,其作用域在整个程序中,如`$debug = true`。 - **常量**(Constants):以大写字母开头,表示不变的值,如`PI = 3.14`,但实际并非完全不可变。 2. 变量规则...

    ruby trap 初学者使用

    - 符号是Ruby中的一种特殊数据类型,它们是不可变的,常用于哈希键和方法调用。理解符号与字符串的区别对于优化内存使用至关重要。 3. **块和 Proc/Lambda**: - Ruby中的块(由`do...end`或`{...}`定义)是代码...

    Mastering Ruby Closures

    闭包在编程中是一个核心概念,它允许一个函数或表达式引用到其外部函数的作用域中的变量。在Ruby中,闭包是一种对象,它可以存储一段代码块以及这段代码可以访问到的变量。闭包的这一特性使得它们在处理集合数据或...

    ruby-debug-1.87.rar

    在实际使用中,`ruby-debug`提供了丰富的命令集,如`step`(单步执行)、`next`(跳过当前行,如果当前行包含方法调用则进入该方法)、`finish`(执行到当前作用域结束)、`break`(设置断点)等。这些命令使我们...

    Ruby 编程语言的书籍

    1. **Ruby内部机制揭秘**:每章末尾都包含“Digging Deeper”部分,揭示Ruby运行时的各种细节,如作用域解析、多线程实现等,帮助读者更好地理解语言本身的设计理念。 2. **陷阱与注意事项**:通过实际案例分析常见...

    教程资源ruby

    - **全局变量**、**实例变量**和**局部变量**:不同作用域内的变量类型。 - **类常量**:属于类的常量。 - **异常处理**:通过 `rescue` 和 `ensure` 处理程序错误和清理操作。 - **存取器**:getter 和 setter 方法...

    ruby官方chm文档

    《ruby23-language.chm》文档深入讲解了Ruby语言的特性,如动态性、元编程、闭包和块、方法定义与调用、变量作用域等。Ruby允许在运行时修改代码,这使得元编程成为其强大之处。理解如何使用`eval`、`class_eval`和`...

Global site tag (gtag.js) - Google Analytics