Ruby 是純面向對象的語言,Ruby 中的一切都是以對象的形式出現。Ruby 中的每個值都是一個對象,即使是最原始的東西:字符串、數字,甚至連 true 和 false 都是對象。類本身也是一個對象,是 Class 類的一個實例。本章將向您講解所有與 Ruby 面向對象相關的主要功能。
類用于指定對象的形式,它結合了數據表示法和方法,把數據整理成一個整齊的包。類中的數據和方法被稱為類的成員。
Ruby 類定義
當您定義一個類時,您實際是定義了一個數據類型的藍圖。這實際上并沒有定義任何的數據,而是定義了類的名稱意味著什么,也就是說,定義了類的對象將由什么組成,以及在該對象上能執行什么操作。
類定義以關鍵字 class 開始,后跟類名稱,最后以一個 end 進行分隔表示終止該類定義。例如,我們使用關鍵字 class 來定義 Box 類,如下所示:
class Box codeend
按照慣例,名稱必須以大寫字母開頭,如果包含多個單詞,每個單詞首字母大寫,但此間沒有分隔符(例如:CamelCase)。
定義 Ruby 對象
類提供了對象的藍圖,所以基本上,對象是根據類進行創建的。我們使用 new 關鍵字聲明類的對象。下面的語句聲明了類 Box 的兩個對象:
box1 = Box.newbox2 = Box.new
initialize 方法
initialize 方法是一個標準的 Ruby 類方法,與其他面向對象編程語言中的 constructor 工作原理類似。當您想要在創建對象的同時初始化一些類變量,initialize 方法就派上用場了。該方法帶有一系列參數,與其他 Ruby 方法一樣,使用該方法時,必須在前面放置 def 關鍵字,如下所示:
class Box def initialize(w,h) @width, @height = w, h endend
實例變量
實例變量是類屬性,它們在使用類創建對象時就變成對象的屬性。每個對象的屬性是單獨賦值的,和其他對象之間不共享值。在類的內部,是使用 @ 運算符訪問這些屬性,在類的外部,則是使用稱為訪問器方法的公共方法進行訪問。下面我們以上面定義的類 Box 為實例,把 @width 和 @height 作為類 Box 的實例變量。
class Box def initialize(w,h) # 給實例變量賦值 @width, @height = w, h endend
訪問器 & 設置器 方法
為了在類的外部使用變量,我們必須在訪問器方法內部定義這些變量,這些訪問器方法也被稱為獲取器方法。下面的實例演示了訪問器方法的用法:
#!/usr/bin/ruby -w # 定義類class Box # 構造器方法 def initialize(w,h) @width, @height = w, h end # 訪問器方法 def printWidth @width end def printHeight @height endend # 創建對象box = Box.new(10, 20) # 使用訪問器方法x = box.printWidth()y = box.printHeight() puts "Width of the box is : #{x}"puts "Height of the box is : #{y}"
新聞熱點
疑難解答