麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Ruby > 正文

Ruby基礎知識之類

2020-10-29 19:40:53
字體:
來源:轉載
供稿:網友

創建類: class后跟類名,其中類名的首字母必須要大寫。實例化時,通過new方法實例化。在c#中有構造器,構造器與類同名。在ruby中,構造器為initialize方法。當通過new方法實例化一個類對象后,會自動調用initialize方法,把new中的參數傳遞給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。后邊跟符號,會自動創建同名的讀寫屬性。
復制代碼 代碼如下:

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:公有的,默認情況下類中的方法是公有的,可以用在任何地方。構造方法initialize為私有的。
private:私有的,類內部使用的,只能被類或子類的實例方法所調用。只能通過self隱式調用,不能通過一個對象顯示調用。一個私有方法m,只能通過m調用,而不能通過o.m或self.m調用。
protected:受保護的,類內部或子類內部使用的方法。與私有的區別是:除self隱式調用外,還可以通過該類對象顯示調用。
可以通過以下方法來聲明方法的訪問性:
復制代碼 代碼如下:

#訪問性 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方法私有,然后通過類方法創建實例
復制代碼 代碼如下:

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

模塊module

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 最新中文字幕免费视频 | 神马久久精品综合 | 国产毛片自拍 | 色综合欧美 | 91久久99热青草国产 | 亚洲国产美女视频 | 免费黄色大片网站 | 日日草日日干 | 欧美日本亚洲视频 | 草草影院地址 | 麻豆19禁国产青草精品 | 黄色午夜剧场 | 国产精品一区在线免费观看 | 日韩精品一区二区三区中文 | 欧美一极视频 | 久草在线观看福利视频 | 色视频一区二区 | 色欧美视频| 国产91丝袜在线熟 | 黄色av.com | 国产在线精品一区二区三区不卡 | 亚洲aⅴ免费在线观看 | 干色视频 | 国产女厕一区二区三区在线视 | 国产一精品一av一免费爽爽 | 免费观看黄色影片 | 成人男女免费视频 | 久久久一区二区精品 | 黄网站在线免费 | 久久国产精品二国产精品 | 日本一区二区免费在线观看 | 九九热视频在线免费观看 | 久久精片| 毛片视频免费观看 | 久久精品网 | 成人免费av在线 | 欧美性生活xxxxx | 一级电影在线免费观看 | 羞羞视频免费网站男男 | 一级电影免费 | 欧美亚洲一级 |