Ruby 類和物件

2021-07-10 11:30:31 字數 3229 閱讀 8184

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類本身。這便產生了一些...