欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Ruby基礎(chǔ)知識(shí)之類

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

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

復(fù)制代碼 代碼如下:

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

訪問(wèn)器

實(shí)例變量只能通過(guò)實(shí)例方法來(lái)訪問(wèn)。如果要訪問(wèn)它們可以提供方法訪問(wèn)器。在c#中稱為屬性,Java中也是定義方法來(lái)表示屬性。

復(fù)制代碼 代碼如下:

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

以上定義了兩個(gè)方法x,y,它們可以讀@x,@y實(shí)例變量。這就定義了讀屬性方法。如果要進(jìn)行賦值操作,還要定義寫(xiě)屬性方法:
復(fù)制代碼 代碼如下:

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

要注意的是:
復(fù)制代碼 代碼如下:

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

只有在實(shí)例中才能這樣使用寫(xiě)屬性。如果在類中,不能通過(guò)name=value這樣來(lái)代替@name=value。但可以通過(guò)self來(lái)這樣使用:self.name=value
Ruby提供了簡(jiǎn)化定義屬性方法:attr_reader和attr_accessor。后邊跟符號(hào),會(huì)自動(dòng)創(chuàng)建同名的讀寫(xiě)屬性。
復(fù)制代碼 代碼如下:

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

類變量,常量,類方法
類變量以@@開(kāi)頭;常量通過(guò)[類名+::常量名]進(jìn)行訪問(wèn);類方法在實(shí)例方法方法名前加類名。在定義類方法時(shí),可以采用一種方式:
復(fù)制代碼 代碼如下:

class<<self
       def 方法
       end
end

那么,這個(gè)方法就是一個(gè)類方法:
復(fù)制代碼 代碼如下:

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

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

#訪問(wèn)性 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方法私有,然后通過(guò)類方法創(chuàng)建實(shí)例
復(fù)制代碼 代碼如下:

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

模塊module

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

相關(guān)文章

  • Ruby實(shí)現(xiàn)命令行中查看函數(shù)源碼的方法

    Ruby實(shí)現(xiàn)命令行中查看函數(shù)源碼的方法

    這篇文章主要介紹了Ruby實(shí)現(xiàn)命令行中查看函數(shù)源碼的方法,,需要的朋友可以參考下
    2014-07-07
  • Ruby中的block代碼塊學(xué)習(xí)教程

    Ruby中的block代碼塊學(xué)習(xí)教程

    在Ruby中,block并不是類,block可以被轉(zhuǎn)化為Proc類中衍生出的對(duì)象,剛接觸Ruby的話block是很難理解的一個(gè)點(diǎn),接下來(lái)就為大家來(lái)總結(jié)Ruby中的block代碼塊學(xué)習(xí)教程
    2016-05-05
  • ruby 對(duì)象的初始化 方法

    ruby 對(duì)象的初始化 方法

    ruby 對(duì)象的初始化 方法...
    2007-11-11
  • Terry七月Ruby讀書(shū)筆記(比較詳細(xì))

    Terry七月Ruby讀書(shū)筆記(比較詳細(xì))

    今年7月讀《Ruby語(yǔ)言入門(mén)教程v1.0》時(shí)的讀書(shū)筆記,靜靜地面對(duì)電腦,嘗試一種新的語(yǔ)言,是一種淡然的快樂(lè)。
    2008-11-11
  • 剖析 rudy 訪問(wèn)控制

    剖析 rudy 訪問(wèn)控制

    剖析 rudy 訪問(wèn)控制...
    2007-11-11
  • Ruby包管理器gem常用命令

    Ruby包管理器gem常用命令

    這篇文章主要介紹了Ruby包管理器gem常用命令,本文講解了獲取幫助、查詢可用包、安裝軟件、查詢已安裝軟件、卸載軟件等常用命令,需要的朋友可以參考下
    2015-04-04
  • Ruby簡(jiǎn)明教程之判斷語(yǔ)句介紹

    Ruby簡(jiǎn)明教程之判斷語(yǔ)句介紹

    這篇文章主要介紹了Ruby簡(jiǎn)明教程之判斷語(yǔ)句介紹,非常簡(jiǎn)潔的講解,可以作為語(yǔ)法備忘,需要的朋友可以參考下
    2014-06-06
  • Ruby中檢測(cè)Gem是否安裝的方法

    Ruby中檢測(cè)Gem是否安裝的方法

    這篇文章主要介紹了Ruby中檢測(cè)Gem是否安裝的方法,本文直接給出實(shí)現(xiàn)代碼以及使用方法,需要的朋友可以參考下
    2015-01-01
  • ruby執(zhí)行周期性任務(wù)的三種gem介紹

    ruby執(zhí)行周期性任務(wù)的三種gem介紹

    無(wú)論是用ruby做系統(tǒng)管理,還是用rails做web開(kāi)發(fā),都可能遇到周期性任務(wù),它們按照一定時(shí)間周期(1小時(shí),2天......)持續(xù)地觸發(fā)。在ruby中,我認(rèn)為一次性任務(wù)使用 sidekiq 來(lái)完成是非常方便的,而周期性的任務(wù)就需要用到 whenever , sidetiq , clockwork 等等gem了。
    2014-07-07
  • 分析Cache 在 Ruby China 里面的應(yīng)用情況

    分析Cache 在 Ruby China 里面的應(yīng)用情況

    之前文章介紹《web 應(yīng)用中常用的各種 cache詳解》,今天來(lái)分享一下在 Ruby China 里面,我們是如何做 Cache 的。
    2014-06-06

最新評(píng)論