ruby 类、对象、变量

来源:互联网 发布:盘古数据最新消息 编辑:程序博客网 时间:2024/05/01 18:05

7、类Class
(1)initialize 方法 ,initialize是一个特殊方法,默认为私有,在调用new创建一个 新对象时,Ruby首先分配一些内存来保存未初始化的对象,然后调用对象的 initialize方法,
(2)inspect方法 默认将对象的ID和实例变量格式化
(3)Ruby的类永远都不是封闭的,意味着可以向一个已有的类中添加方法,包括内 建类
(4)Ruby的类允许继承,如class Child < Parent
(5)继承与Mixins Ruby支持单继承,但可以从任何数量的mixin中引入功能,这 提供了可控的、类似于多继承的能力。
(6)方便快捷的定义属性的访问方法,如:
class Song
attr_reader :name, :artist, :duration
end
类似的方法有:attr_writer 写属性
(7)虚拟属性 使用属性创建方法创建虚拟实例变量,对外部就像其他属性一样,但 内部却没有对应的实例变量,如:
class Song
def duration_in_minutes
@duration/60.0
end
def duration_in_minutes=(value)
@duration=(value*60).to_i
end
(8)类变量 类似于C++中的类静态变量,由两个@开头,如:@@count
(9)类方法 类似于C++中的类静态函数,定义类方法的方式还有
class Demo
def Demo.meth1

end
def self.meth2

end
class << self
def meth3

end
end
end

8、Singleton模式
class MyLogger
private_class_method :new
@@logger = nil
def MyLogger.create
@@logger = new unless @@logger
@@logger
end
end
注释:private_class_method 将类方法声明为私有;
9、变量不是对象,而是对象的引用:
person1 = “Tim”;person2=person1
person1[0]=”J”
person2
将person1赋值给person2不会创建任何新对象;它只是将person1的对象引用拷贝给 person2,因此person1和person2都指向同一个对象。赋值别名对象,潜在地给你引用 同一对象的多个变量,可以通过String的dup方法来避免。
person2 = person1.dup
10、可以通过冻结一个对象来阻止他人对其进行修改, 如 person1.freeze

0 0
原创粉丝点击