论坛首页 编程语言技术论坛

Ruby 类定义

浏览 2976 次
锁定老帖子 主题:Ruby 类定义
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-09  

类定义
    方式一:通过执行类代码体创建或扩展类Class的对象

  

ruby 代码
  1. class [scope::] classname [<superexpr]   
  2.     body   
  3.   end  


     注意:

1、如果superexpr存在,那么该superexpr应当是一个以Class对象为结果的表达式,而且它将是被定义的类的超类。
如果省略superexpr,则默认为类Object
2、所有类定义是在代码执行时候生成的。
3、所有类定义在执行后都是一个Class类的对象。
4、所有的这些对象都将赋给名为classname的常量。
5、使用域作用符(::)可以为类定义中的classname前置一个已存在的类或模块名。这样会将新的定义插入到前面定义
的模块和/或类的名字空间中,但不是在这些外部类的作用域中解释此定义。前面带有域作用符的classname将被放置在
那个类或模块所处的顶层(这样作有个什么好处)


   方式二、匿名类
       

ruby 代码
  1. class << obj   
  2.          body   
  3. end  

      

       该类是一个匿名类,将会和指定的对象关联。这时这个匿名类将是该关联对象的虚拟类,原来该对象的类,变成了该虚拟  类的超类。
注意:如果直接在类定义外,给你对象新增一些方法和这样为一个对象创建一个类是等价的。同样是创建一个虚拟类。

 

       Ruby类定义和其他语言不一样,其他语言都是在编译期处理的。而ruby是在代码运行时候根据类的定义创建的。这样如下特点:
   1、可以在运行时候决定类的定义。这样根据不同条件,得出不同的类的定义结构
   2、如果类定义是可执行的代码,那么它一定是在某个对象的上下文中执行的。Ruby中直接把该类作为当前对象
   3、这个对象的类属于Class。说明,所有创建类就是一个对象,他们的类就是Class
     

   发表时间:2007-05-10  
原来是这样,懂了一点
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics