国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Ruby基礎知識之類

2019-10-26 19:26:07
字體:
來源:轉載
供稿:網友

創建類: 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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桂阳县| 丽水市| 乳山市| 达州市| 丰顺县| 乃东县| 和田市| 湖南省| 万荣县| 珠海市| 旌德县| 蕲春县| 库尔勒市| 炎陵县| 剑阁县| 上蔡县| 临高县| 镇江市| 互助| 黄梅县| 青铜峡市| 大悟县| 苍溪县| 北辰区| 蒙山县| 双峰县| 乐至县| 泽普县| 隆德县| 商河县| 通江县| 公安县| 安化县| 湖州市| 桦甸市| 谢通门县| 贺州市| 江安县| 平塘县| 镇远县| 渭源县|