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

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

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

創(chuàng)建類: class后跟類名,其中類名的首字母必須要大寫。實(shí)例化時(shí),通過new方法實(shí)例化。在c#中有構(gòu)造器,構(gòu)造器與類同名。在ruby中,構(gòu)造器為initialize方法。當(dāng)通過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)

訪問器

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

復(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)行賦值操作,還要定義寫屬性方法:
復(fù)制代碼 代碼如下:

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

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

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

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

類變量,常量,類方法
類變量以@@開頭;常量通過[類名+::常量名]進(jì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

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

#訪問性 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)建實(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)
另一作用是作為混入。通過include把模塊中的實(shí)例方法包含到其它類中。感覺功能像C#中的名字空間引入。

相關(guān)文章

最新評(píng)論