标签:
1.类和实例的关系
使用【实例.class】查看某个对象属于哪个类
使用【实例.instance_of(类名)】判断该实例是否属于某个类
使用【实例.instance_methods】查看类的所有实例方法
2.BasicObject类是所有类的父类,它只定义了ruby对象的最基本的方法,甚至连一般对象需要的功能都没有,顾一般继承Object类,可以通过【is-a】或【is-a?】判断继承关系
3.类可以通过【class】关键字进行创建,默认具有无参的构造方法,通过是可以通过定义【initialize方法】定义有参数的构造方法,在方法中可以通过【self】关键字来调用接受者
4.属性的getter和setter方法可以通过两种方法实现
方法一:定义供外部访问的方法 def 属性 @属性 end 和 def 属性名=(属性值) @属性=属性值 end
方法二:通过声明访问属性的方法 attr_reader:属性名 attr_writer:属性名 attr_accessor:属性名
5.类方法的定义
1.方法一:在单例类中定义的方法都是单例方法 ,可以使用【class << 类名】的形式定义单例类,在单例类中添加方法即可
2.方法二:在普通类定义中,添加类方法 【class << self】
class 类名
class << self
def 方法名(参数)
执行操作
end
end
end
3.方法三:使用 【def 类名.方法名(参数)】的形式定义
4.方法四:在类的定义中使用【def self.方法名】进行定义
6.类常量可以直接在类的定义中进行定义,使用【类名::常量名】进行调用
类变量不能使用attr_accessor,需要直接定义访问方法
7.方法的访问级别:public(默认),private,protected
可以通过【private : 方法名】来单独设置某个方法的访问级别
也可以通过【private】等来设置,之后的所有方法的访问级别
8.类的扩展
1.在原有类的基础上添加新的方法
class 原类名
def 新添加的方法名
执行的处理
end
end
2.继承父类(默认继承Object类)
1.使用【class 类名 < 父类名】的方式定义子类,在子类定义中可以通过【alias 别名 原名】将原方法名进行别名设置,通过【undef 方法名】删除已有的方法
2.通过【常量名=Class.new(父类名)】定义一个继承了父类的子类,并赋值给常量
3.在方法类定义中,通过【extend 模块名】扩展类的类方法,通过【include 模块名】扩展类的实例方法
标签:
原文地址:http://www.cnblogs.com/lifeone/p/4870649.html