Ruby學習之類和物件的簡單理解
阿新 • • 發佈:2019-01-02
我們都知道,Ruby是一種面向物件的程式語言,而面向物件程式語言的特性,無非就是封裝、繼承、多型和抽象等,它的程式主體則主要涉及到類和物件,咱們這次呢,不談別的,只是說說這個類和物件。
咱們有過其它諸如PHP、Java語言的使用經驗的兄嘚應該知道,類是物件的抽象,而物件則是類的具體化實現,你好比一個類,我們把它叫做車,裡面定義了外觀、車標、發動機資訊等等,這就是個類,而物件呢,就是我們具體化的說一輛紅色外觀的賓士車,我們根據類的資訊,可以具體化的區分每一輛車,這就是類和物件的意義。
具體的關於類和物件的意義啊什麼的,咱也廢話也就不多說了,後期會補充說明的,現在咱們來看在Ruby中如何定義一個類:
class Lu
end
通過上述程式碼我們就算是定義了一個Lu類,而關鍵詞end就是用來結束這個類的,類的所有變數和常量都是在上述兩行程式碼之間來定義的。
我們再來看下在Ruby的類中的幾種變數型別:
- 區域性變數:區域性變數是在方法中定義的變數。區域性變數在方法外是不可用的。在後續的章節中,您將看到有關方法的更多細節。區域性變數以小寫字母或 _ 開始。
- 例項變數:例項變數可以跨任何特定的例項或物件中的方法使用。這意味著,例項變數可以從物件到物件的改變。例項變數在變數名之前放置符號(@)。
- 類變數:類變數可以跨不同的物件使用。類變數屬於類,且是類的一個屬性。類變數在變數名之前放置符號(@@)。
- 全域性變數:類變數不能跨類使用。如果您想要有一個可以跨類使用的變數,您需要定義全域性變數。全域性變數總是以美元符號($)開始。
完事就要來建立物件了,同樣是用new關鍵詞,但是寫法有點不同,如下:
luyaran = Lu.new
同時,Ruby也是允許我們向new關鍵詞傳遞引數來初始化變數,不過這就需要我們在建立類的時候,同時宣告initialize方法,具體用法如下:
class Lu def initialize(id, name, sex) @lu_id=id @lu_name=name @lu_sex=sex end end luyaran = Lu.new('1','luyaran','girl')
大概就是這麼些了,我們再來看下Ruby中的函式,它的定義方法很簡單,def開頭,之後跟上方法名稱,一般是小寫,和Python差不多,不過需要end來結束這個方法,來看個簡單但是完整的例子:
#!/usr/bin/ruby
class Lu
def hello
puts "Hello Ruby!"
end
end
# 使用上面的類來建立物件
object = Lu.new
object.hello
咱們最後呢,來建立一個完整的類(Lu),裡面有兩個方法,一個(msg)顯示人物資訊,一個(num)顯示咱們定義的人物數量,具體方式如下:
#!/usr/bin/ruby
class Lu
@@num_person=0
def initialize(id, name, sex)
@lu_id=id
@lu_name=name
@lu_addr=sex
end
def display_details()
puts "人物 id: #@lu_id" #輸出資訊方式
puts "人物 name: #@lu_name"
puts "人物 sex: #@lu_addr"
end
def total_no_of_customers()
@@num_person += 1
puts "人物數量: #@@num_person"
end
end
# 建立物件
luyaran = Lu.new("1","luyaran","girl")
cuijinpeng = Lu.new("2","cuijinpeng","boy")
# 呼叫方法
luyaran.display_details()
luyaran.total_no_of_customers()
cuijinpeng.display_details()
cuijinpeng.total_no_of_customers()
好啦,本次記錄就到這裡了。
如果感覺不錯的話,請多多點贊支援哦。。。