`

ruby的 Class,Module,Object,Kernel

 
阅读更多
打开irb:
puts ‘abc’.class ==> String

puts String.class ==> Class

puts Class.class ==> Class

以上说明 所有的字符串都是 String类的实例,而 String类 是 Class类的实例

Class.superclass ==> Module

Module.superclass ==> Object

Object.superclass ==> nil

以上说明: Class类继承了Module类,Module类继承了Object类,Object类是所有类的祖先


Class.class ==> class
Module.class ==> class
Object.class ==> class
Kernel.class ==> Module

以上说明:由于Class, Module, Object 都是class,而Kernel是Module

Class.ancdstors ==> [Class,Module,Object,Kernel]

Module.ancestors ==> [Module,Object,Kernel]

Object.ancestors ==> [Object,Kernel]

Kernel.ancestors ==> [Kernel]

以上说明:
因为Object混入了Kernel这个模块,又由于Object是Ruby中所有类的父类,这样以来,Kernel中内建的核心函数就可以被Ruby中所有的类和对象访问。
Object的实例方法由Kernel模块定义。
Kernel模块中定义了private method和public method
对于一个普通的对象,可以直接调用Kernel的public method
在irb中运行: a=Object.new
输出:=> #<Object:0x2ee9470>
运行:  a.public_methods

=> ["inspect", "clone", "public_methods", "display", "instance_variable_defined?", "equal?", "freeze", "methods", "respond_to?", "dup", "to_yaml_style",
"instance_variables", "__id__", "method", "eql?", "id", "singleton_methods", "send", "taint", "to_yaml_properties", "frozen?", "instance_variable_get", "__send__", "instance_of?", "to_a", "to_yaml", "type", "protected_methods", "instance_eval", "object_id", "require_gem", "==", "require", "===", "taguri", "instance_variable_set", "kind_of?", "extend", "gem", "to_s", "taguri=", "hash", "class", "private_methods", "=~", "tainted?", "untaint", "nil?", "is_a?"]
分享到:
评论

相关推荐

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

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

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

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

    RUBY基础入门指南

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

    uninclude:实施Module#uninclude和Object#unextend

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

    ruby语法基础教程

    §1.18 Module 104 §1.19 NilClass 104 §1.20 Numeric 104 §1.21 Object 104 §1.22 Proc 105 §1.23 Process::Status 105 §1.24 Range 105 §1.25 Regexp 105 §1.26 String 105 §1.27 Struct 105 §1.28 ...

    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 ...

    Metaprogramming Ruby(Second Edition)

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

    ruby 程序设计

    ##### §11.1 使用Kernel模块处理I/O操作 - **读写文件**:通过`File.open`打开文件,`puts`写入内容等。 ##### §11.2 文件处理 - **文件操作**:`File.read`、`File.write`等方法。 ##### §11.3 StringIO - **...

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

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

    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面向对象编程中类与方法的基础学习

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

Global site tag (gtag.js) - Google Analytics