Ruby Class类和对象创建的过程
Ruby Class类和创建对象的过程
在Ruby中,所有的类都是Class类的实例对象,Class类中定义了两个new方法,一个是类方法new,一个是实例方法new:
Class.new创建类
类方法new很简单,它返回一个新建的类,所以可赋值给任何一个变量名作为类名,即使是小写字母开头的非常量。因为常规类的类名都是常量,所以将返回值赋值给一个大写字母开头的变量,那么和常规类没有区别。
1 | new(super_class=Object) → a_class |
例如:
1 | class C;end |
new、allocate和initialize创建对象
Class的new实例方法用于创建对象,它会先调用allocate()创建对象(创建的是空对象,会为此对象分配内存),allocate()返回后,new()会继续调用initialize()方法为对象做初始化操作,它会将new接收到的参数完整地传递给initialize()。
虽然不建议修改Class的new实例方法,因为对它的修改是牵一发而动全身,但它确实是可以被自定义的。官方给了一个示例:
1 | class Class |
此外,也可以手动单独使用allocate()来创建空对象,从而绕过initialize()。
1 | class C |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 骏马金龙!
评论