文章会有【原创】或者【转载】标示,部分来自Google Baidu的学习结果 {Java/PHP/Python/Ruby/Go}

Ruby 的基本知识总结五  


1. 对象是包含了一系列属性和行为的实体。对象的属性用变量表示;对象的功能(可以采取的行为或动作)用方法表示。
2. 实例变量(属性)代表的是对象的状态。
3. 方法用来改变对象的状态。
4. 类是由实例变量和方法组成的。
5. 类用来构造对象。类是对象的蓝本。
6. Ruby中有超过30个的内置类。类的继承关系请见class hierarchy。
7. 在Ruby中,不管是整数还是字符串,任何事物都是对象。并且这些对象内置了一系列方法。如果想调用方法,只要在对象后加一个".",然后跟上方法名就可以了,比如,object.method。有时候,有些方法可以用在任何地方,比如puts和gets,不用加对象名,直接用就可以了。这些方法已经内置在ruby的内核模块里,所有的对象都已经默认继承了这些方法,所以可以直接用。当运行一个ruby程序的时候,一个叫main的对象被创建,它属于object类,是程序的入口。
8. 表示整数的类是Fixnum和Bignum,它们的区别是位长不同。浮点数用Float表示。
9. 类的定义方式为,Name...End。
10. 类在ruby中也是对象,是Class类的对象。
11. 类是对象,是Class类的对象;Object是一个类。好好理解这句话。
12. 当定义一个新类的时候,一个Class类的对象被创建,并被分配给一个常量(也就是类名)。当调用.new创建一个类的对象时,会首先调用allocate方法给对象分配内存,然后才是调用initialize方法初始化对象。对象的构造和初始化是不同的,但它们都可以被覆盖。初始化要调用initialize方法;构造是在调用new方法时完成的,所有说initialize不是构造器函数。
13. 对象是在堆里创建的。
14. d = Dog.new('Labrador', 'Benzy')。d只是对象的引用,并不是对象本身。
15. 哪怕是刚创建的一个新对象,它也已经继承了一些方法,使用methods方法可以查看这些方法。其中object_id和respond_to?方法是比较重要的两个。
16. 在ruby中,每一个对象都会有一个唯一的id,使用object_id方法可以查看这个id。
17. 使用respond_to?方法能够判断调用的方法是否存在。
18. Object.class方法来判断当前的对象来自哪个类。
19. instance_of?方法能够判断对象是否是某个类的实例。
20. Literal Constructors的意思是,可以用某些特殊的写法来代替new方法创建新对象。
21. Ruby中的对象堆分配了最少8兆的内存空间。ruby的垃圾回收属于“标记-清除”型。“标记”的过程会检查对象是否仍在使用中。如果对象仍然被某个变量引用,那么它会被打上一个“保留”的标志。如果对象没有被任何变量引用,它不会被打上“保留”标志。
清除过程只会对没有“保留”标志的对象进行垃圾回收。
22. 变量是对对象的引用,它不是对象本身,也没有类型。
23. load方法能把文件引入多次。
24. require比较常用,它只引用一次,即使多次调用。
25. require 'filename',不带文件扩展名。
26. 在Ruby中,Class是开放的。你总是可以修改现有的类(添加或删除内容),不管是自定义的类还是ruby内置的类。并且,这种修改甚至可以不在该类的定义文件中。
27. 继承的好处是,子类可以继承父类的属性和方法,不需要重新定义,只要加上自己特有的特性就可以了。
28. Ruby的继承是单继承。
29. Object是所有类的父类,它的方法可以被继承,也可以被覆盖。
30. 覆盖允许子类重新实现父类的方法,覆盖父类的实现。
31. 当你覆盖了某个方法,新的方法就会生效。
32. super调用父类的同名方法,自动传参数过去。
33. super()调用父类同名方法,不传任何参数过去。
34. super(a,b,c)调用父类同名方法,传参数a,b,c过去。
35. Ruby中,方法名是唯一的,重载需要写在一个方法中。