萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> 進一步深入Ruby中的類與對象概念

進一步深入Ruby中的類與對象概念

   這篇文章主要介紹了進一步深入Ruby中的類與對象概念,包括集成與多態等更多知識點的整理,需要的朋友可以參考下

  Ruby是純面向對象的語言,所有項目似乎要Ruby中為一個對象。Ruby中的每個值是一個對象,即使是最原始的東西:字符串,數字甚至true和false。即使是一個類本身是一個對象,它是Class類的一個實例。本章將通過所有功能涉及到Ruby的面向對象。

  類是用來指定對象的形式,它結合了數據表示和方法操縱這些數據,轉換成一個整齊的包。在一個類的數據和方法,被稱為類的成員。

  Ruby類的定義:

  定義一個類,定義的數據類型的草圖。 這實際上並不定義任何數據,但它定義的類名字的意思什麼,即是什麼類的對象將包括這樣一個對象上執行什麼操作可以。

  類定義開始與關鍵字class類名和 end 分隔。例如,我們定義Box類使用class關鍵字如下:

  class Box

  code

  end

  名稱必須以大寫字母開始,按照約定名稱中包含多個單詞,每個單詞沒有分隔符(駝峰式)一起執行。

  定義Ruby的對象:

  類為對象的藍圖,所以基本上是一個從一個類對象被創建。我們聲明一個類的對象使用new關鍵字。下面的語句聲明了兩個對象,Box 類:

  ?

1 2 box1 = Box.new box2 = Box.new

  initialize方法:

  initialize方法是一個標准的Ruby類的方法,和其它面向對象編程語言的構造方法有相同的方式工作。 initialize方法是有用的,在創建對象的時候,一些類變量初始化。這種方法可能需要的參數列表,它像其他Ruby之前的方法用def關鍵字定義,如下所示:

  class Box

  def initialize(w,h)

  @width, @height = w, h

  end

  end

  實例變量:

  實例變量是類的一種屬性,一旦我們使用的類對象被創建的對象的屬性。每個對象的屬性被分別賦值的並與其它對象共享,它們在類的內部使用@操作符訪問,但訪問類之外的,我們使用的公共方法被稱為訪問器方法。如果我們把上述定義的類 Box,然後 @width 和 @height 類 Box實例變量。

  ?

1 2 3 4 5 6 class Box def initialize(w,h) # assign instance avriables @width, @height = w, h end end

  訪問器和setter方法:

  為了外部能訪問類的變量,它們必須定義存取器方法,這些存取器方法也被稱為getter方法。下面的例子演示了如何使用訪問器方法:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #!/usr/bin/ruby -w   # define a class class Box # constructor method def initialize(w,h) @width, @height = w, h end   # accessor methods def printWidth @width end   def printHeight @height end end   # create an object box = Box.new(10, 20)   # use accessor methods x = box.printWidth() y = box.printHeight()   puts "Width of the box is : #{x}" puts "Height of the box is : #{y}"

  當上面的代碼執行時,它會產生以下結果:

  ?

1 2 Width of the box is : 10 Height of the box is : 20

  類似的存取方法用於訪問的變量值,Ruby提供了一種方法來從類的外部設置這些變量的值,那就是setter方法??,定義如下:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #!/usr/bin/ruby -w   # define a class class Box # constructor method def initialize(w,h) @width, @height = w, h end   # accessor methods def getWidth @width end def getHeight @height end   # setter methods def setWidth=(value) @width = value end def setHeight=(value) @height = value end end   # create an object box = Box.new(10, 20)   # use setter methods box.setWidth = 30 box.setHeight = 50   # use accessor methods x = box.getWidth() y = box.getHeight()   puts "Width of the box is : #{x}" puts "Height of the box is : #{y}"

  當上面的代碼執行時,它會產生以下結果:

  ?

1 2 Width of the box is : 30 Height of the box is : 50

  實例方法:

  也以同樣的方式,因為我們使用def關鍵字定義其他方法,並按下圖所示僅對使用一個類的實例,它們可以被用來定義該實例方法。它們的功能不局限於訪問實例變量,他們也可以按要求做更多的事情。

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #!/usr/bin/ruby -w   # define a class class Box # constructor method def initialize(w,h) @width, @height = w, h end # instance method def getArea @width * @height end end   # create an object box = Box.new(10, 20)   # call instance methods a = box.getArea() puts "Area of the box is : #{a}"

  當上面的代碼執行時,它會產生以下結果:

  ?

1 Area of the box is : 200

  類的方法和變量:

  類變量是一個變量,這是一個類

copyright © 萬盛學電腦網 all rights reserved