本文共 1165 字,大约阅读时间需要 3 分钟。
类与对象:
Ruby是一种真正的面向对象的程序设计语言, 面向对象是指以对象为中心的理论体系
** 封装 (Encapsulation) ** 继承 () ** 多态 (Polymorphism) 对比Java & Ruby, 获取一个数字的绝对值。 Java : int num = Math.abs(-99) PS: 将一个数值传递给Math类的一个静态函数abs处理, 因为在Java中数值是基本类型 而不是类 Ruby : c = -99.abs PS: 在ruby中,任何事物都是对象, 操作及其结果都是对象
类的定义
class ClassName (类名首字母必写笮措) def method_name(variables) #some code end end
继承
Ruby 继承的方法很简单, 使用<即可, 并且只支持单继承, 每一个类都只能有一个直接 父类,这样避免了多继承的复杂,但同时它又提供了mixin的机制用来实现多继承, a)可以使用super关键字来调用父类对象的方法, 当super省略时将使用当前方法的参数来调用 b)如果传入的参数被修改再调用super, 那么将会使用修改后的值 class Base def meth(info) puts "This is Base #{info}" end end class Derived < Base def meth(info) puts 'This is Derived #{info}' info = "over" super end end
类变量 : 被一个类的所有实例对象共享, 也可以被类方法访问到。 类变量名以'@@'
开始, 而且必须有初始值,她是私有的, 在类外无法直接访问。 类方法 : 属于一个类的方法, 而且在定义她的时候需要在方法前加上类名 class Person @@number = 0 def initialize(name, gender, age) @name = name @gender = gender @age = age @@number += 1 end def Person.getNumber (类方法) return @@number end end
Ruby的动态性
a)可以重新定义同一个方法 class RedefTest def meth puts 'This is meth' end end obj = RedefTest.new obj.meth class RedefTest def meth puts 'This is new meth' end end obj.meth Result outcome: This is meth. This is new meth.转载地址:http://brcci.baihongyu.com/