`
java-admin
  • 浏览: 1376426 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

ruby的class与module的区别

 
阅读更多

http://blog.163.com/rettar@126/blog/static/121650342201141711395591/

 

 

1、 模块不能实例化,类不能include

2、如果模块和类不在用一个文件中,如果要使用include,先使用require把文件引入

3、include不是简单的将模块的实例变量和方法拷贝到类中,而是建立一个由类到所包含模块的引用

4、如果有多个include,将依次生成代理类,最后一个include的将是该类的直接超类,依次向上衍生

5、含有include的模块或者类定义,可以访问它所包含的常量,类变量和实例方法。如果一个模块被包含,改模块的常量,类变量,实例方法都被绑定到该类的一个匿名超类中,类的对象会响应发送给模块实例方法的消息

6、模块里可以定义一个initialize方法,当创建包括模块的类的对象时,满足一下条件之一,则模块的该方法将被调用:a、类没有定义他自己的initialize方法,b、类的initialize方法中调用了super

分享到:
评论

相关推荐

    Ruby 中的 module_function 和 extend self异同

    在Ruby编程语言中,`module_function`和`extend self`都是与模块(module)相关的特性,它们用于控制方法的可见性和行为。理解这两者的异同对于编写清晰、可维护的代码至关重要。 首先,我们来看`module_function`...

    Ruby入门教程中文PDF 附实例

    Ruby还支持模块(Module),可以用来组织代码和实现多继承的效果。此外,Ruby的块(Block)和 Proc 对象让函数式编程变得简单,例如使用`each`方法遍历数组: ```ruby fruits = ["Apple", "Banana", "Cherry"] ...

    Ruby元编程第二版中文

    2. **类与模块操作**:Ruby的`Class.new`和`Module.new`可以用来动态创建类和模块。`class_eval`和`module_eval`允许在类或模块上下文中执行字符串或块作为代码。 3. **对象的反射**:`Object#methods`、`Class#...

    eloquent ruby

    - 类(Class)与实例(Instance)的概念。 - 继承(Inheritance)与多态(Polymorphism)。 - Ruby的元编程特性,如模块(Module)和混入(Mixins)等。 3. **Ruby基础语法** - 变量和数据类型:整数、浮点数、字符串、数组...

    Ruby 方法、类

    Ruby 是一种面向对象的编程语言,以其优雅的语法和强大的面向对象特性著称。在Ruby中,方法和类是构建程序的基本元素,它们是实现代码重用和组织的关键概念。 ### 方法(Methods) 方法在Ruby中是可重复使用的代码...

    ruby(前途大好的ruby+rains)

    3. **元编程**:Ruby的元编程能力非常强大,可以使用`class_eval`、`instance_eval`等方法在运行时修改或创建类和对象的行为。 4. **块和 Proc**:Ruby中的块是一段可执行的代码,可以与方法一起使用,通过`do..end...

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

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

    abstract_class:Ruby 中的抽象类

    与模块不同,抽象类可以被继承,并且它们的派生类可以被实例化。 查看或实现以获取其他示例。 安装 gem install abstract_class 要求 Ruby 1.8.7+ 用法 要使类抽象,只需扩展AbstractClass模块即可。 module ...

    ruby设计模式的代码有好多

    在Ruby中,可以使用`singleton_class`和`instance`方法来实现。例如: ```ruby class Singleton class def instance @instance ||= new end end end ``` 这个例子中,`@instance`变量保证了类的唯一实例...

    ruby API资料

    理解`Class`和`Module`如何工作,以及如何定义和继承类,是掌握Ruby的关键。 - **元编程**:Ruby允许在运行时动态修改代码,这使得代码更加灵活和可扩展。`class_eval`和`instance_eval`等方法是实现元编程的关键。...

    Ruby语言入门教程

    Ruby还支持模块(Module),它是组织代码的一种方式,可以包含常量、类方法和实例方法。模块可以被混入(include)到类中,实现代码的复用。这对于创建类之间的关系,尤其是横向关系非常有用。 Ruby的块(Block)和...

    ruby中文教程,从基础到深入的让你学习ruby

    Ruby提供了许多工具来进行元编程,如`eval`函数可以执行字符串中的代码,`class_eval`和`instance_eval`允许在运行时修改类或对象的行为。此外,Ruby的`send`方法可以动态调用方法,`method_missing`可以捕获未定义...

    Programming Ruby

    5. **元编程**:Ruby的元编程能力强大,通过反射API(如`Module#define_method`、`class_eval`等)可以在运行时修改类和对象的行为。这使得Ruby非常适合创建自定义DSL(领域特定语言)。 6. **标准库**:Ruby的标准...

    Ruby元编程 源代码 Metaprogramming Ruby source code

    4. **反射API**:Ruby提供了一系列的反射API,如`Class#methods`,`Module#constants`,`ObjectSpace`等,这些工具允许我们检查和操作对象、类和模块的内部状态。 5. **模块混入**:模块可以被混入到类中,提供代码...

    ruby语法

    6. **类与对象**: Ruby是面向对象的,通过`class`关键字创建类,`new`方法实例化对象。继承使用`操作符。例如: ```ruby class Person def initialize(name) @name = name end def say_name puts "My name ...

    二十分钟Ruby入门教程

    最后,Ruby有强大的模块(module)和继承(inheritance)机制,允许代码重用和扩展。模块可以包含常量、方法和类,而类可以通过`操作符继承另一个类的特性。 总之,二十分钟的Ruby入门教程将带你初步了解这个优雅的...

    learning-ruby.

    理解类(Class)、对象(Object)、继承(Inheritance)、模块(Module)和封装(Encapsulation)是核心内容。 5. **块、Proc和Lambda**:Ruby中的块是代码片段,可以用do..end或者花括号{}包裹。Proc和Lambda是可...

    ruby实用函数和实例

    Ruby的模块(Module)和类(Class)系统使得代码组织和复用变得简单。模块可以用来封装相关的函数和常量,避免命名冲突,类则是面向对象编程的基础,通过继承和多态,可以构建复杂的应用架构。 最后,Ruby的Gem生态...

Global site tag (gtag.js) - Google Analytics