ruby 類、對象、變量

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章