- Ruby 基礎
- Ruby - 首頁
- Ruby - 概述
- Ruby - 環境設定
- Ruby - 語法
- Ruby - 類和物件
- Ruby - 變數
- Ruby - 運算子
- Ruby - 註釋
- Ruby - IF...ELSE
- Ruby - 迴圈
- Ruby - 方法
- Ruby - 程式碼塊
- Ruby - 模組
- Ruby - 字串
- Ruby - 陣列
- Ruby - 雜湊表
- Ruby - 日期和時間
- Ruby - 範圍
- Ruby - 迭代器
- Ruby - 檔案 I/O
- Ruby - 異常
Ruby - 類和物件
Ruby 是一種完美的面向物件程式語言。面向物件程式語言的特性包括:
- 資料封裝
- 資料抽象
- 多型性
- 繼承
這些特性在章節 面向物件 Ruby 中進行了討論。
面向物件程式涉及類和物件。類是建立單個物件的藍圖。用面向物件的術語來說,我們可以說你的腳踏車是稱為腳踏車的物件類的一個例項。
以任何車輛為例。它包括車輪、馬力以及燃油或油箱容量。這些特性構成了 Vehicle 類的成員資料。您可以藉助這些特性來區分一輛車輛與另一輛車輛。
車輛還可以具有一些功能,例如停止、駕駛和加速。即使這些功能也構成了 Vehicle 類的成員資料。因此,您可以將類定義為特徵和功能的組合。
可以將 Vehicle 類定義為:
Class Vehicle {
Number no_of_wheels
Number horsepower
Characters type_of_tank
Number Capacity
Function speeding {
}
Function driving {
}
Function halting {
}
}
透過為這些資料成員分配不同的值,您可以形成 Vehicle 類的多個例項。例如,飛機有三個車輪,馬力為 1000,燃油為油箱型別,容量為 100 升。同樣,汽車有四個車輪,馬力為 200,汽油為油箱型別,容量為 25 升。
在 Ruby 中定義類
要使用 Ruby 實現面向物件程式設計,您首先需要學習如何在 Ruby 中建立物件和類。
Ruby 中的類始終以關鍵字class開頭,後跟類名。名稱應始終以大寫字母開頭。Customer 類可以顯示為:
class Customer end
您可以使用關鍵字end終止類。class中的所有資料成員都在類定義和end關鍵字之間。
Ruby 類中的變數
Ruby 提供四種類型的變數:
區域性變數 - 區域性變數是在方法中定義的變數。區域性變數在方法外部不可用。您將在後續章節中看到有關方法的更多詳細資訊。區域性變數以小寫字母或 _ 開頭。
例項變數 - 例項變數在任何特定例項或物件的各種方法中都可用。這意味著例項變數因物件而異。例項變數以 at 符號 (@) 開頭,後跟變數名。
類變數 - 類變數在不同的物件之間可用。類變數屬於類,是類的特徵。它們以 @@ 符號開頭,後跟變數名。
全域性變數 - 類變數在類之間不可用。如果要有一個在類之間可用的單個變數,則需要定義一個全域性變數。全域性變數始終以美元符號 ($) 開頭。
示例
使用類變數 @@no_of_customers,您可以確定正在建立的物件的數量。這有助於確定客戶的數量。
class Customer @@no_of_customers = 0 end
使用 new 方法在 Ruby 中建立物件
物件是類的例項。您現在將學習如何在 Ruby 中建立類的物件。您可以使用類的new方法在 Ruby 中建立物件。
new方法是一種在 Ruby 庫中預定義的唯一方法型別。new 方法屬於類方法。
以下是如何建立 Customer 類的兩個物件 cust1 和 cust2 的示例:
cust1 = Customer. new cust2 = Customer. new
這裡,cust1 和 cust2 是兩個物件的名稱。您在物件名稱後寫上等於號 (=),然後是類名。然後,點運算子和關鍵字new將緊隨其後。
自定義方法來建立 Ruby 物件
您可以將引數傳遞給new方法,這些引數可用於初始化類變數。
當您計劃用引數宣告new方法時,您需要在建立類時宣告initialize方法。
initialize方法是一種特殊型別的特殊方法,當用引數呼叫類的new方法時,它將被執行。
以下是如何建立 initialize 方法的示例:
class Customer
@@no_of_customers = 0
def initialize(id, name, addr)
@cust_id = id
@cust_name = name
@cust_addr = addr
end
end
在此示例中,您聲明瞭initialize方法,並使用id、name和addr作為區域性變數。這裡,def和end用於定義 Ruby 方法initialize。您將在後續章節中學習有關方法的更多資訊。
在initialize方法中,您將這些區域性變數的值傳遞給例項變數 @cust_id、@cust_name 和 @cust_addr。這裡區域性變數儲存與 new 方法一起傳遞的值。
現在,您可以如下建立物件:
cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2 = Customer.new("2", "Poul", "New Empire road, Khandala")
Ruby 類中的成員函式
在 Ruby 中,函式稱為方法。class中的每個方法都以關鍵字def開頭,後跟方法名。
方法名始終以小寫字母為佳。您可以在 Ruby 中使用關鍵字end結束方法。
以下是如何定義 Ruby 方法的示例:
class Sample
def function
statement 1
statement 2
end
end
這裡,statement 1和statement 2是 Sample 類中function方法主體的一部分。這些語句可以是任何有效的 Ruby 語句。例如,我們可以使用puts方法列印Hello Ruby,如下所示:
class Sample
def hello
puts "Hello Ruby!"
end
end
現在在以下示例中,建立一個 Sample 類的物件並呼叫hello方法,檢視結果:
#!/usr/bin/ruby
class Sample
def hello
puts "Hello Ruby!"
end
end
# Now using above class to create objects
object = Sample. new
object.hello
這將產生以下結果:
Hello Ruby!
簡單案例研究
如果您想更多地練習類和物件,這裡有一個案例研究。