濮阳杆衣贸易有限公司

主頁 > 知識庫 > ruby 學習筆記(2) 類的基本使用

ruby 學習筆記(2) 類的基本使用

熱門標簽:AI電銷機器人 線路 天津外呼系統(tǒng)怎么收費 中牟外呼系統(tǒng)違法嗎 柯城手機地圖如何做地圖標注 漯河電銷 外呼線路從哪里出來的 征服者企業(yè)地圖標注 巫師3地圖標注魔力之所 淮安自動外呼系統(tǒng)供應商
ruby語言跟c#的一些重要差別在于:
1.ruby是動態(tài)語言,c#是靜態(tài)語言--即對象在new出來以后,ruby還可以動態(tài)給對象實例添加一些屬性或方法(javascript也是如此)
2.ruby中刻意弱化了變量類型這個概念,默認情況下變量/方法都不需要聲明具體(返回)類型,但其實在ruby內部,會自動根據(jù)變量的值分配類型。(可以通過 “puts 變量.class“查看)
3.ruby相對c#來講,可能有些雷的地方在于:父類中的private成員,居然是可以在子類中使用的!
...其它地方,等學習深入了再寫出來
最后上一段測試代碼,展示了ruby中類的基本用法:
復制代碼 代碼如下:

class People #跟javascript這類動態(tài)語言一樣,ruby中的類也沒有public,private這類訪問控制標識符

    def initialize(_name) #構造函數(shù),名字是固定:initialize
        @name = _name; #約定:類的私有變量以@開頭
    end

    def to_string #類似C#中的做法,這里寫一個ToString方法的ruby版
        "My name is #{@name}" #ruby中方法最后一行的值,會被當作函數(shù)值返回
    end

    def get_name_size
        return @name.length #這個方法中返回的是數(shù)字型(即名稱的長度)
    end

    def test #類定義的最后部分,把這個方法標記為私有方法了
        puts "private method(test) in People."
    end

    def show_name
        test #私有方法,可在內部調用
        puts "name = #{@name}"
    end

    attr_accessor:name #定義一個可讀寫的屬性,這里也體現(xiàn)了ruby的一個重要思想:約定重于規(guī)范,因為@name在之前已經使用過,這里的屬性只需要把@去掉,ruby就會自動智能的生成類似c#中 set{value = @name},get{return @name}的語句

    private:test #標明test方法是private屬性的
    protected:get_name_size #標明get_name_size只能在本類或子類定義中使用(或者在子類定義中賦值給子類實例)

end
aPeople = People.new("jimmy");#創(chuàng)建一個People的實例
puts aPeople.to_string #調用to_string方法
#puts aPeople.get_name_size #將報錯,因為該方法受保護
#puts aPeople.test #將報錯,因為該方法是私有方法
aPeople.show_name
puts aPeople.name
aPeople.name = "楊俊明" #修改姓名
aPeople.show_name
#再定義一個子類
class Man People    
    def initialize(_name)
        super
        @sex = true
    end    

    attr_reader:sex #定義只讀屬性sex

    def call_protected_method
        puts get_name_size #調用父類的受保護方法
    end

    def call_protected_method2(man1)
        puts man1.get_name_size #注意這里:這里可以把父類的受保護方法,動態(tài)添加到子類實例
    end

    def call_private_method #子類可以調用父類的私有方法!!! 這一點剛開始很不習慣
        test
    end

    def call_private_method2(man1)
        man1.test #注意這里:語法檢查雖然可以通過,但是運行時會提示私有方法無法調用,這也是private與protected的區(qū)別
    end

    
end
puts "******************************"
aMan = Man.new("jimmy.yang");
aMan.show_name
aMan.call_protected_method
puts aMan.sex
aMan.call_private_method
aMan2 = Man.new("Mike")
aMan.call_protected_method2(aMan2);
#aMan.call_private_method2(aMan2);
a = "abc";
#aMan.call_protected_method2(a); #雖然ruby本身對變量沒有類型概念,但是這樣卻不行,即:在調用父類的受保護方法時,其實是要類型匹配的
puts aMan.class #顯示aMan的類名稱

運行結果如下:
復制代碼 代碼如下:

>ruby classDemo.rb
My name is jimmy
private method(test) in People.
name = jimmy
jimmy
private method(test) in People.
name = 楊俊明
******************************
private method(test) in People.
name = jimmy.yang
10
true
private method(test) in People.
4
Man
>Exit code: 0

作者:菩提樹下的楊過
出處:http://yjmyzz.cnblogs.com
您可能感興趣的文章:
  • ruby 標準類型總結
  • Ruby字符串、條件、循環(huán)、數(shù)組、Hash、類基本操作筆記
  • ruby 類常量 解析
  • js 數(shù)組實現(xiàn)一個類似ruby的迭代器
  • 一個簡單的Ruby可逆加密解密類
  • Ruby中的Proc類及Proc的類方法Proc.new的使用解析
  • Ruby類實例變量、類實例方法和類變量、類方法的區(qū)別
  • Ruby中實現(xiàn)把字符串轉換為類的2種方法
  • Ruby面向對象編程中類與方法的基礎學習

標簽:甘孜 河池 克拉瑪依 南昌 棗莊 內江 大慶 西雙版納

巨人網(wǎng)絡通訊聲明:本文標題《ruby 學習筆記(2) 類的基本使用》,本文關鍵詞  ruby,學習,筆記,類,的,基本,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ruby 學習筆記(2) 類的基本使用》相關的同類信息!
  • 本頁收集關于ruby 學習筆記(2) 類的基本使用的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    丽江市| 仙居县| 九台市| 阿勒泰市| 平陆县| 东丽区| 西林县| 宣汉县| 广水市| 靖西县| 徐闻县| 武威市| 东辽县| 华阴市| 内江市| 安溪县| 武邑县| 赤壁市| 长阳| 宁都县| 陕西省| 家居| 桦甸市| 抚顺市| 瓮安县| 美姑县| 鄂伦春自治旗| 泸州市| 祁连县| 井研县| 抚远县| 阿克| 麻阳| 禄丰县| 白水县| 定远县| 卓资县| 芒康县| 垣曲县| 溧水县| 荥阳市|