Ruby中的面向对象思想(第一篇)

第一篇我们来讨论一下Ruby中面向对象编程基本思想,还有更复杂的其模块、类、对象等的继承体系结构,我准备放在后续的第二篇来讨论。

我们重点讨论和体会来自《ruby元编程》中的思想,还有部分想法是结合自己对多种编程语言的使用后的理解,笔者熟悉的编程语言还有Python,Golang等。当然最早面向对象思想是来自学校所学的C++和Java。

在Ruby中,什么是对象?对象无非就是一组实例变量,外加一个指向其类的引用。对象的方法并不存在于对象本身,而是存在于对象类中。在类中,这些方法被称为类的实例方法。

什么是类?类无非就是一个对象(Class类的一个实例),外加一组实例方法和一个对其超类的引用。Class类是Module类的子类,因此类也是一个模块。 跟任何其他对象一样,类有自己的方法,比如new()方法,这些是Class类的实例方法,跟其他对象一样,类必须通过引用进行访问,你已经使用常量引用过他们:这就是类的名字。

对象是类,类也是对象。

Class类Module类的子类。 Ruby中的类只是比模块多三个实例方法。new(), allocate(), superclass()。

类其实是一种包装,是一种作用域。