1. 程式人生 > >Ruby學習之類和物件的簡單理解

Ruby學習之類和物件的簡單理解

我們都知道,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()

好啦,本次記錄就到這裡了。

如果感覺不錯的話,請多多點贊支援哦。。。