ruby 類、對象、變數

來源:互聯網
上載者:User

標籤: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

ruby 類、對象、變數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.