查看: 3246|回复: 10

[已经解决] 关于Object、Module和Class的关系

  [复制链接]

八云紫的式神<

梦石
0
星屑
833
在线时间
1260 小时
注册时间
2008-1-1
回帖
3889

烫烫烫

发表于 2009-7-22 21:16:05 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
不知道该怎么描述问题了……谁研究过把成果一下吧
大概就是谁是所有类的父类……之类的问题吧
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-7-21
回帖
150
发表于 2009-7-22 21:25:35 | 显示全部楼层
不知道该怎么描述问题了……谁研究过把成果一下吧
大概就是谁是所有类的父类……之类的问题吧
zh99998 发表于 2009-7-22 21:16

没研究过...本人是脚本小白
回复

使用道具 举报

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
回帖
3622
发表于 2009-7-22 21:26:24 | 显示全部楼层
那些脚本术语偶是不太懂得的说~

Object是所有类的父类
我记得c++也是~
回复

使用道具 举报

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-7-21
回帖
150
发表于 2009-7-22 21:30:27 | 显示全部楼层
那些脚本术语偶是不太懂得的说~

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

LS的..你学什么?
回复

使用道具 举报

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
回帖
3622
发表于 2009-7-22 21:33:06 | 显示全部楼层
- -~ 各种语言多多少少都有一些共性吧 - -~

以下来自F1

Object
所有类的父类。它定义了对象的一般行为。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-7-21
回帖
150
发表于 2009-7-22 21:35:57 | 显示全部楼层
- -~ 各种语言多多少少都有一些共性吧 - -~

以下来自F1

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

是有一些共同的地方...
回复

使用道具 举报

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
回帖
1912
发表于 2009-7-22 23:16:01 | 显示全部楼层
C++ 哪来的 Object 类…… C# 还差不多 >__<

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 类的实例
回复

使用道具 举报

天仙

梦石
0
星屑
720
在线时间
184 小时
注册时间
2008-4-15
回帖
4872

贵宾

发表于 2009-7-23 01:11:36 | 显示全部楼层
其实....Object 跟 Module 是一个循环.......

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

所以 Module 是 Object 的父类
Object 也是 Module 的父类
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复

使用道具 举报

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
回帖
1912
发表于 2009-7-23 11:23:43 | 显示全部楼层
Object.is_a?(Module)    # => true
这是因为 Object 这个“类本身”是一个 Class 类型的对象,所以它也是一个 Module 对象,并不是因为 Module 是 Object 的父类 ^^
回复

使用道具 举报

孤独守望

梦石
0
星屑
3144
在线时间
1535 小时
注册时间
2006-10-16
回帖
4223

开拓者贵宾

发表于 2009-7-23 11:27:03 | 显示全部楼层
无聊插嘴:本地C++的确没有Object,但是托管C++同样是Object至上的结构

类都是Class类的对象,也是Object的对象
对象(不包括类)都是Object的对象
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部