Project1

标题: 关于Object、Module和Class的关系 [打印本页]

作者: zh99998    时间: 2009-7-22 21:16
标题: 关于Object、Module和Class的关系
不知道该怎么描述问题了……谁研究过把成果一下吧
大概就是谁是所有类的父类……之类的问题吧
作者: 恶の魔    时间: 2009-7-22 21:25
不知道该怎么描述问题了……谁研究过把成果一下吧
大概就是谁是所有类的父类……之类的问题吧
zh99998 发表于 2009-7-22 21:16

没研究过...本人是脚本小白
作者: ONEWateR    时间: 2009-7-22 21:26
那些脚本术语偶是不太懂得的说~

Object是所有类的父类
我记得c++也是~
作者: 恶の魔    时间: 2009-7-22 21:30
那些脚本术语偶是不太懂得的说~

Object是所有类的父类
我记得c++也是~
ONEWateR 发表于 2009-7-22 21:26

LS的..你学什么?
作者: ONEWateR    时间: 2009-7-22 21:33
- -~ 各种语言多多少少都有一些共性吧 - -~

以下来自F1

Object
所有类的父类。它定义了对象的一般行为。
作者: 恶の魔    时间: 2009-7-22 21:35
- -~ 各种语言多多少少都有一些共性吧 - -~

以下来自F1

Object
所有类的父类。它定义了对象的一般行为。
ONEWateR 发表于 2009-7-22 21:33

是有一些共同的地方...
作者: 紫苏    时间: 2009-7-22 23:16
C++ 哪来的 Object 类…… C# 还差不多 >__<
[line]1[/line]Class 类一般在高度面向对象的语言中都有,它是编程语言中“一个类的类型”,当我们构建了一个类后,我们实际上就是创建了一个 Class 类的实例:
  1. class A
  2.   def fn
  3.     p "fn() called"
  4.   end
  5. end
复制代码
这样就是产生了一个 Class 对象,并把它赋给了全局常量 A(或者说让 A 指向了这个对象)~
但这样是一个静态设计的类,我们还可以动态地设计一个类,达到与静态设计的类同样的效果:
  1. A = Class.new
  2. A.class_eval("def fn\np \"fn() called\"\nend")
复制代码
Module 是 Class 的父类,是“一个模块的类型”,原理同上~

Object 是凌驾于所有类型之上的超级父类,Class 和 Module 本身也是一种对象,所以它们必然还有 Object 这个超类~

总结:
一个类是 Class 类的实例;一个模块是 Module 类的实例;一个类和一个模块都是对象,所以该类和该模块都是 Object 类的实例
作者: 雪流星    时间: 2009-7-23 01:11
其实....Object 跟 Module 是一个循环.......

p Module.is_a?(Object)    # => true
p Object.is_a?(Module)    # => true

所以 Module 是 Object 的父类
Object 也是 Module 的父类
作者: 紫苏    时间: 2009-7-23 11:23
Object.is_a?(Module)    # => true
这是因为 Object 这个“类本身”是一个 Class 类型的对象,所以它也是一个 Module 对象,并不是因为 Module 是 Object 的父类 ^^
作者: IamI    时间: 2009-7-23 11:27
无聊插嘴:本地C++的确没有Object,但是托管C++同样是Object至上的结构

类都是Class类的对象,也是Object的对象
对象(不包括类)都是Object的对象
作者: ★_茄孓    时间: 2009-7-23 11:28
弄懂面向对象应该不难理解,同意LS所说,
一个类是 Class 类的实例;一个模块是 Module 类的实例;一个类和一个模块都是对象,所以该类和该模块都是 Object 类的实例

看看秀秀的走火入魔教程也有写的




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1