`
wangdeshui
  • 浏览: 255763 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一步一步学Ruby(五): Class, Module, Object,Kernel的关系

阅读更多

1. Class, Module, Object,Kernel的关系

我们看到Ruby里,可以直接写puts, print等,感觉像是命令动词一样,这和我们说的Ruby里一切都是对象有点冲突,其实我们理解了Ruby中Class, Module,Object,Kernel的关系,就明白了,通过下面的代码,我们知道Module是Class的父类.

image

image

  • 通过上图可以看出Class, Module, Object 都是class,而Kernel是Module。
  • Object是Ruby中所有类的父类,Object混入了Kernel这个模块,所以Kernel中内建的核心函数就可以被Ruby中所有的类和对象访问。
  • Object的实例方法由Kernel模块定义。

2. Kernel

我们可以把Kernel理解为系统预定义的一些方法,我们可以在所有的对象上使用,使用时不需要使用类型作为前缀,当然我们也可以加上Kernel,看起来像C#的静态方法。

image

Kernel模块中定义了private method和public method,我们可以在irb里输入Kernel.methods, Kernel.public_methods, Kernel.private_methods.

对于一个普通的对象,可以直接调用Kernel的public method

而要想调用一个普通对象所包含的Kernel的函数,用一般的调用方法无法做到,只有通过Send来实现.

 

本文作者:王德水

未经本人同意,禁止转载

分享到:
评论

相关推荐

    uninclude:实施Module#uninclude和Object#unextend

    不包含 实施Module#uninclude和Object#unextend 经过测试的Ruby版本 ... ancestors # => [Foo, Bar, Object, Kernel, BasicObject] Foo . class_eval { uninclude Bar } p Foo . ancestors # => [Foo,

    ruby初学者教程(对初学者很有帮助)

    ### Ruby语言介绍与基础知识 #### 一、Ruby语言概述 **1.1 Ruby的历史** Ruby是一种面向对象的脚本语言,由日本人松本行弘(Matsumoto Yukihiro)于1993年开始开发。起初,Ruby是作为一种兴趣项目而诞生的,但...

    ruby-ddp:太简单的数据打印机

    class TestModule def piyo # ... end end dp %w[ 100 101 102 ] dp test : 1000 dp TestModule . method ( :instance_method ) dp TestModule . instance_method ( :piyo ) 运行 ruby​​ 脚本: $ ruby -...

    Ruby程序设计(简洁清新的教程)

    Ruby有一些特殊的类和方法,如`Object`类是所有类的基类,`Kernel`类包含常用的基本函数。 **3.5 类变量与类方法** 类变量以`@@`开头,可在所有实例间共享;类方法则使用`self`关键字定义: ```ruby class ...

    ruby 程序设计

    ### Ruby 程序设计知识点概览 #### 一、Ruby语言概述 ##### §1.1 Ruby的历史 - **起源与发展**:Ruby是由日本程序员松本行弘(Yukihiro Matsumoto)于1995年开始开发的一种面向对象的脚本语言。它结合了Perl的...

    Ruby Pocket Reference

    - **Lists of Methods:** The book provides comprehensive lists of methods available in the Object, String, Array, and Hash classes and the Kernel module. These lists are invaluable for understanding ...

    RUBY基础入门指南

    ### RUBY基础入门指南 #### 一、Ruby语言概述 **1.1 Ruby的历史** Ruby是一种面向对象的脚本语言,由日本人松本行弘(Yukihiro Matsumoto)于1995年开始开发。它结合了Perl的灵活性、Smalltalk的强大功能以及Ada...

    Ruby面向对象编程中类与方法的基础学习

    - `Comparable`和`Kernel`出现在`String`的祖先链中是因为`String`继承自`Object`,而`Object`包含了这些模块。 #### 十、总结 通过本文的学习,我们了解了Ruby面向对象编程中类与方法的基本概念,包括类的定义、...

    Metaprogramming Ruby(Second Edition)

    7. **反射API**:`ObjectSpace`、`Kernel::caller`、`Method`、`Proc`等类提供了对运行时对象和方法的深入洞察,帮助开发者了解和操控程序的内部状态。 8. **Metaclasses**:每个Ruby对象都有一个元类,用于存储...

    ruby语法基础教程

    ruby语法基础教程,比较全的。 目 录 Ruby语言 1 Grant Ren 1 第一部分 Ruby语言基础 8 第一章 Ruby语言概述 8 §1.1 Ruby的历史 8 §1.2 Ruby名字的由来 8 §1.3 Ruby的特点 8 §1.4 Ruby和Python的比较 9 第二章...

    ruby基础教程(第四版)第8章 模块 1

    在Ruby编程语言中,模块(Module)是一个重要的概念,它在代码组织和功能复用方面起到了关键作用。在《Ruby基础教程(第四版)》的第8章中,我们探讨了模块的基本特性以及如何利用模块来扩展类的功能。 首先,模块...

Global site tag (gtag.js) - Google Analytics