最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ruby基礎(chǔ)知識之類

 更新時間:2015年04月16日 09:59:24   投稿:junjie  
這篇文章主要介紹了Ruby基礎(chǔ)知識之類,本文講解了類的創(chuàng)建、訪問器、類變量、常量、類方法、方法的訪問性、工廠方法、模塊module等內(nèi)容,需要的朋友可以參考下

創(chuàng)建類: class后跟類名,其中類名的首字母必須要大寫。實例化時,通過new方法實例化。在c#中有構(gòu)造器,構(gòu)造器與類同名。在ruby中,構(gòu)造器為initialize方法。當通過new方法實例化一個類對象后,會自動調(diào)用initialize方法,把new中的參數(shù)傳遞給initialize方法進行初始化。在c#中的域,在ruby中稱為實例變量,定義時前邊加@前綴,表示是一個實例變量。

復制代碼 代碼如下:

class Customer
    def initialize(name,age)
      @name,@age=name,age
    end
end
 
c1=Customer.new("Tom",20)

訪問器

實例變量只能通過實例方法來訪問。如果要訪問它們可以提供方法訪問器。在c#中稱為屬性,Java中也是定義方法來表示屬性。

復制代碼 代碼如下:

class Customer
    def initialize(name,age)
      @name,@age=name,age
    end
    
    def name
      @name
    end
    def age
      @age
    end
end

以上定義了兩個方法x,y,它們可以讀@x,@y實例變量。這就定義了讀屬性方法。如果要進行賦值操作,還要定義寫屬性方法:
復制代碼 代碼如下:

    def name=(v)
      @name=v
    end
    def age=(v)
      @age=v
    end

要注意的是:
復制代碼 代碼如下:

c1=Customer.new("Tom",20)
c1.name="Jhon"

只有在實例中才能這樣使用寫屬性。如果在類中,不能通過name=value這樣來代替@name=value。但可以通過self來這樣使用:self.name=value
Ruby提供了簡化定義屬性方法:attr_reader和attr_accessor。后邊跟符號,會自動創(chuàng)建同名的讀寫屬性。
復制代碼 代碼如下:

class Customer
    def initialize(name,age)
      @name,@age=name,age
    end 
 
    attr_reader :name,:age
    attr_accessor:name,:age
end
c1=Customer.new("Tom",20)
puts c1.name,c1.age
c1.name="Jhon"
c1.age=30
puts c1.name,c1.age

類變量,常量,類方法
類變量以@@開頭;常量通過[類名+::常量名]進行訪問;類方法在實例方法方法名前加類名。在定義類方法時,可以采用一種方式:
復制代碼 代碼如下:

class<<self
       def 方法
       end
end

那么,這個方法就是一個類方法:
復制代碼 代碼如下:

class Customer
    def initialize(name,age)
      @name,@age=name,age
    end
    class <<self
      def showName
        'ok'
      end
    end
end
 
puts Customer.showName

方法的訪問性
public:公有的,默認情況下類中的方法是公有的,可以用在任何地方。構(gòu)造方法initialize為私有的。
private:私有的,類內(nèi)部使用的,只能被類或子類的實例方法所調(diào)用。只能通過self隱式調(diào)用,不能通過一個對象顯示調(diào)用。一個私有方法m,只能通過m調(diào)用,而不能通過o.m或self.m調(diào)用。
protected:受保護的,類內(nèi)部或子類內(nèi)部使用的方法。與私有的區(qū)別是:除self隱式調(diào)用外,還可以通過該類對象顯示調(diào)用。
可以通過以下方法來聲明方法的訪問性:
復制代碼 代碼如下:

#訪問性 private protected public
  private
  def private_method
    puts "private method testing"
  end
  protected
  def protected_method
    puts "protected method testing"
  end
  
  public:protected_method

工廠方法
使用new方法私有,然后通過類方法創(chuàng)建實例
復制代碼 代碼如下:

class Fruit
  private_class_method:new
  def Fruit.CreateFruit
    new Fruit
  end
end
f=Fruit.CreateFruit

模塊module

module作用之一是做為名字空間用。調(diào)用類時與調(diào)用常量相同:兩個冒號
另一作用是作為混入。通過include把模塊中的實例方法包含到其它類中。感覺功能像C#中的名字空間引入。

相關(guān)文章

  • Ruby中的p和puts的使用區(qū)別淺析

    Ruby中的p和puts的使用區(qū)別淺析

    這篇文章主要介紹了Ruby中的p和puts的使用區(qū)別淺析,本文用一個實例講解了它們之間的區(qū)別,并總結(jié)出結(jié)論,需要的朋友可以參考下
    2015-03-03
  • Ruby和元編程之萬物皆為對象

    Ruby和元編程之萬物皆為對象

    這篇文章主要介紹了Ruby和元編程之萬物皆為對象,想要掌握Ruby和Ruby的元編程,對象就是第一門必修功課,需要的朋友可以參考下
    2014-10-10
  • Ruby基礎(chǔ)語法初探

    Ruby基礎(chǔ)語法初探

    這篇文章主要介紹了Ruby基礎(chǔ)語法,第一次看到Ruby代碼的朋友不知會不會被Ruby的語法吸引:) 需要的朋友可以參考下
    2015-07-07
  • Ruby中的String對象學習筆記

    Ruby中的String對象學習筆記

    這篇文章主要介紹了Ruby中的String對象學習筆記,本文講解了String對象的定義、String對象的操作、使用數(shù)組下標的方式操作字符串等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • Ruby的25個編程細節(jié)(技巧、實用代碼段)

    Ruby的25個編程細節(jié)(技巧、實用代碼段)

    這篇文章主要介紹了Ruby的25個編程細節(jié)(技巧、實用代碼段),本文直接給出主題和相應代碼,需要的朋友可以參考下
    2015-05-05
  • Ruby語法筆記

    Ruby語法筆記

    本文給大家記錄的是本人學習ruby之后所記錄下來的部分語法知識,分享給有需要的小伙伴,希望對大家能夠有所幫助。
    2016-02-02
  • 實例解析Ruby設(shè)計模式編程中Strategy策略模式的使用

    實例解析Ruby設(shè)計模式編程中Strategy策略模式的使用

    這篇文章主要介紹了Ruby設(shè)計模式編程中Strategy策略模式的使用實例,Strategy模式在Ruby on Rails框架開發(fā)中也經(jīng)常用到,需要的朋友可以參考下
    2016-03-03
  • Ruby實現(xiàn)的最優(yōu)二叉查找樹算法

    Ruby實現(xiàn)的最優(yōu)二叉查找樹算法

    這篇文章主要介紹了Ruby實現(xiàn)的最優(yōu)二叉查找樹算法,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-05-05
  • 冒泡排序算法及Ruby版的簡單實現(xiàn)

    冒泡排序算法及Ruby版的簡單實現(xiàn)

    冒泡排序為最基本的排序算法之一,其時間復雜度為O(n^2),這里我們就來簡單看一下冒泡排序算法及Ruby版的簡單實現(xiàn),首先還是先來了解算法原理:
    2016-05-05
  • Ruby實現(xiàn)的刪除已經(jīng)合并的git分支腳本分享

    Ruby實現(xiàn)的刪除已經(jīng)合并的git分支腳本分享

    這篇文章主要介紹了Ruby實現(xiàn)的刪除已經(jīng)合并的git分支腳本分享,本文給出腳本代碼、使用方法和執(zhí)行結(jié)果,需要的朋友可以參考下
    2015-01-01

最新評論

蓝田县| 南京市| 呈贡县| 安康市| 丰镇市| 正阳县| 晴隆县| 贵州省| 饶平县| 曲松县| 泸水县| 琼结县| 惠州市| 宁化县| 郎溪县| 葫芦岛市| 德庆县| 宁乡县| 长宁区| 舒兰市| 平泉县| 潞西市| 灵璧县| 尚义县| 济南市| 集安市| 县级市| 辉县市| 宁强县| 信丰县| 乌兰县| 秭归县| 永靖县| 安乡县| 江北区| 正镶白旗| 武义县| 腾冲县| 正宁县| 辰溪县| 湟中县|