ruby是一種物件導向程式設計語言,具有物件導向的特性:封裝、抽象、繼承和多型性。
在ruby中,類以關鍵字class
開始,後面跟類名(應大寫),以end
結束。例如:
class
customer
#...
end
1.2 變數
ruby提供四種型別的變數:
①區域性變數:區域性變數是在方法中定義的變數。區域性變數在方法外是不可用的。區域性變數以小寫字母或_
開始。未初始化的變數值為nil。
②例項變數:例項變數可以跨任何特定的例項或物件中的方法使用。這意味著,例項變數可以從物件到物件的改變。例項變數以@
開頭。未初始化的變數值為nil。
③類變數:類變數可以跨不同的物件使用。類變數屬於類,且是類的乙個屬性,並被共享在整個繼承鏈中。類變數以@@
開頭。必須初始化之後才能夠在方法中使用。
④全域性變數:類變數不能跨類使用。如果您想要有乙個可以跨類使用的變數,您需要定義全域性變數。全域性變數以$
開頭。
看到這裡可能胡迷糊,不怕,給你舉幾個例子,記得執行看一下結果哦。
區域性變數對的例子:
i0 = 1
loop
跟我們平時理解的區域性變數的含義一致。
例項變數的例子如下:
class
customer
definitialize(id, name, addr)
@cust_id=id
@cust_name=name
@cust_addr=addr
enddefdisplay_details()
puts "customer id #@cust_id"
puts "customer name #@cust_name"
puts "customer address #@cust_addr"
endend
# create objects
cust1=customer.new("1", "john", "wisdom apartments, ludhiya")
cust2=customer.new("2", "poul", "new empire road, khandala")
# call methods
cust1.display_details()
cust2.display_details()
說明一下:
①initialize()類似建構函式。如果定義多個initialize(),以最後乙個為準。
②當您想要在乙個單行上顯示例項變數的文字和值時,您需要在 puts 語句的變數名前面放置符號(#)。文字和帶有符號(#)的例項變數應使用雙引號標記。
有點像獲取乙個物件的屬性。
類變數的例子如下:
class
customer
@@no_of_customers=0
definitialize(id, name, addr)
@cust_id=id
@cust_name=name
@cust_addr=addr
enddefdisplay_details()
puts "customer id #@cust_id"
puts "customer name #@cust_name"
puts "customer address #@cust_addr"
enddef
total_no_of_customers()
@@no_of_customers += 1
puts "total number of customers: #@@no_of_customers"
endend
# create objects
cust1=customer.new("1", "john", "wisdom apartments, ludhiya")
cust2=customer.new("2", "poul", "new empire road, khandala")
# call methods
cust1.total_no_of_customers()
cust2.total_no_of_customers()
類變數可以統計類物件的數量呢。
全域性變數的例子如下:
$global_variable = 10
class
class1
defprint_global
puts "global variable in class1 is #$global_variable"
endend
class
class2
defprint_global
puts "global variable in class2 is #$global_variable"
endend
class1obj = class1.new
class1obj.print_global
class2obj = class2.new
class2obj.print_global
常量以大寫字母開頭。定義在類或模組內的常量可以從類或模組的內部訪問,定義在類或模組外的常量可以被全域性訪問。
常量不能定義在方法內。引用乙個未初始化的常量會產生錯誤。對已經初始化的常量賦值會產生警告。
class
example
var1 = 100
var2 = 200
defshow
puts "第乙個常量的值為 #"
puts "第二個常量的值為 #"
endend
# 建立物件
object=example.new()
object.show
它們是特殊的變數,有著區域性變數的外觀,但行為卻像常量。您不能給這些變數賦任何值。
self: 當前方法的接收器物件。
true: 代表 true 的值。
false: 代表 false 的值。
nil: 代表 undefined 的值。
file: 當前原始檔的名稱。
line: 當前行在原始檔中的編號。
Ruby 中的類和物件
最近在ruby china中閒逛,無意中發現了一位提出的問題,這個問題相當有意思,並且促使我寫下了這篇部落格。原問題是這樣描述的 class object defdo it puts do it endend object do it 這個class method 怎麼來的?object new d...
Ruby 中的類和物件
近在ruby china中閒逛,無意中發現了一位提出的問題,這個問題相當有意思,並且促使我寫下了這篇部落格。原問題是這樣描述的 class object defdo it puts do it endend object do it 這個class method 怎麼來的?object new do...
ruby類與物件
ruby中的物件是類生成的,而類本身也是物件。ruby的頂級類是object其餘所有的類都直接或簡介繼承與object。其中class繼承module,module繼承object,而所有的物件其實都是class類的示例,這其中當然包括object,module,以及class類本身。這便產生了一些...