Ruby 是純面向?qū)ο蟮恼Z言,Ruby 中的一切都是以對象的形式出現(xiàn)。Ruby 中的每個(gè)值都是一個(gè)對象,即使是最原始的東西:字符串、數(shù)字,甚至連 true 和 false 都是對象。類本身也是一個(gè)對象,是 Class 類的一個(gè)實(shí)例。本章將向您講解所有與 Ruby 面向?qū)ο笙嚓P(guān)的主要功能。
類用于指定對象的形式,它結(jié)合了數(shù)據(jù)表示法和方法,把數(shù)據(jù)整理成一個(gè)整齊的包。類中的數(shù)據(jù)和方法被稱為類的成員。
Ruby 類定義
當(dāng)您定義一個(gè)類時(shí),您實(shí)際是定義了一個(gè)數(shù)據(jù)類型的藍(lán)圖。這實(shí)際上并沒有定義任何的數(shù)據(jù),而是定義了類的名稱意味著什么,也就是說,定義了類的對象將由什么組成,以及在該對象上能執(zhí)行什么操作。
類定義以關(guān)鍵字 class 開始,后跟類名稱,最后以一個(gè) end 進(jìn)行分隔表示終止該類定義。例如,我們使用關(guān)鍵字 class 來定義 Box 類,如下所示:
class Box codeend
按照慣例,名稱必須以大寫字母開頭,如果包含多個(gè)單詞,每個(gè)單詞首字母大寫,但此間沒有分隔符(例如:CamelCase)。
定義 Ruby 對象
類提供了對象的藍(lán)圖,所以基本上,對象是根據(jù)類進(jìn)行創(chuàng)建的。我們使用 new 關(guān)鍵字聲明類的對象。下面的語句聲明了類 Box 的兩個(gè)對象:
box1 = Box.newbox2 = Box.new
initialize 方法
initialize 方法是一個(gè)標(biāo)準(zhǔn)的 Ruby 類方法,與其他面向?qū)ο缶幊陶Z言中的 constructor 工作原理類似。當(dāng)您想要在創(chuàng)建對象的同時(shí)初始化一些類變量,initialize 方法就派上用場了。該方法帶有一系列參數(shù),與其他 Ruby 方法一樣,使用該方法時(shí),必須在前面放置 def 關(guān)鍵字,如下所示:
class Box def initialize(w,h) @width, @height = w, h endend
實(shí)例變量
實(shí)例變量是類屬性,它們在使用類創(chuàng)建對象時(shí)就變成對象的屬性。每個(gè)對象的屬性是單獨(dú)賦值的,和其他對象之間不共享值。在類的內(nèi)部,是使用 @ 運(yùn)算符訪問這些屬性,在類的外部,則是使用稱為訪問器方法的公共方法進(jìn)行訪問。下面我們以上面定義的類 Box 為實(shí)例,把 @width 和 @height 作為類 Box 的實(shí)例變量。
class Box def initialize(w,h) # 給實(shí)例變量賦值 @width, @height = w, h endend
訪問器 & 設(shè)置器 方法
為了在類的外部使用變量,我們必須在訪問器方法內(nèi)部定義這些變量,這些訪問器方法也被稱為獲取器方法。下面的實(shí)例演示了訪問器方法的用法:
#!/usr/bin/ruby -w # 定義類class Box # 構(gòu)造器方法 def initialize(w,h) @width, @height = w, h end # 訪問器方法 def printWidth @width end def printHeight @height endend # 創(chuàng)建對象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}"
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注