国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Ruby - ruby 學習筆記(2) 類的基本使用

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

2020-04-12 13:31菩提樹下的楊過 Ruby

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

ruby語言跟c#的一些重要差別在于:
1.ruby是動態語言,c#是靜態語言--即對象在new出來以后,ruby還可以動態給對象實例添加一些屬性或方法(javascript也是如此)
2.ruby中刻意弱化了變量類型這個概念,默認情況下變量/方法都不需要聲明具體(返回)類型,但其實在ruby內部,會自動根據變量的值分配類型。(可以通過 “puts 變量.class“查看)
3.ruby相對c#來講,可能有些雷的地方在于:父類中的private成員,居然是可以在子類中使用的!
...其它地方,等學習深入了再寫出來
最后上一段測試代碼,展示了ruby中類的基本用法:

復制代碼 代碼如下:


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

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

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

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

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

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

    attr_accessor:name #定義一個可讀寫的屬性,這里也體現了ruby的一個重要思想:約定重于規范,因為@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");#創建一個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 #注意這里:這里可以把父類的受保護方法,動態添加到子類實例
    end

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

    def call_private_method2(man1)
        man1.test #注意這里:語法檢查雖然可以通過,但是運行時會提示私有方法無法調用,這也是private與protected的區別
    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 訪問控制

    剖析 Ruby 訪問控制

    前面,我們說 Ruby 沒有函數,只有方法.而且實際上有不止一種方法.這一節我們介紹 訪問控制 (accesscontrols). 想想當我們在最高層而不是在一個類的定義里定義...

    ruby教程網3572020-04-08
  • Ruby簡要說明Ruby中的迭代器

    簡要說明Ruby中的迭代器

    這篇文章主要介紹了Ruby中的迭代器,迭代器的概念在動態語言的編程中十分重要,文章中介紹了Ruby中的each迭代器和collect迭代器,需要的朋友可以參考下 ...

    goldensun2772020-04-25
  • RubyRuby進行文件信息輸出實例代碼

    Ruby進行文件信息輸出實例代碼

    Ruby進行文件信息輸出實例代碼,數據是隨機的,所以每次的記錄都會不同。 ...

    ruby教程網2962020-04-10
  • RubyRuby環境下安裝使用bundler來管理多版本的gem

    Ruby環境下安裝使用bundler來管理多版本的gem

    這篇文章主要介紹了Ruby環境下安裝使用bundler來管理多版本的gem的方法,舉了Ruby On Rails中的應用實例來進行演示,需要的朋友可以參考下 ...

    日拱一卒4332020-05-10
  • RubyRuby迭代器的7種技巧分享

    Ruby迭代器的7種技巧分享

    這篇文章主要介紹了Ruby迭代器的7種技巧分享,Ruby中的迭代器非常人性化,本文既是講解了7個技巧也是講解了7種迭代器,需要的朋友可以參考下 ...

    腳本之家4782020-04-20
  • RubyRuby簡潔學習筆記(一):字符串、數字、類和對象

    Ruby簡潔學習筆記(一):字符串、數字、類和對象

    這篇文章主要介紹了Ruby簡潔學習筆記(一):字符串、數字、類和對象,本文是學習筆記第一篇,需要的朋友可以參考下 ...

    腳本之家2472020-04-20
  • RubyCentOS中配置Ruby on Rails環境

    CentOS中配置Ruby on Rails環境

    經過一個上午的折騰,終于把ROR環境在CentOS中搞定,繞了很多彎路,把文章寫下來總結一下 ...

    可樂加糖4762020-04-12
  • RubyRuby設計模式編程中使用Builder建造者模式的實例

    Ruby設計模式編程中使用Builder建造者模式的實例

    這篇文章主要介紹了Ruby設計模式編程中使用Builder建造者模式的實例,建造者模式將一個復雜對象的構造與它的表示分離,使同樣的構建過程可以創建不同的表...

    范孝鵬2192020-05-07
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 国产精品美女在线观看 | 免费的黄色网 | 亚洲性在线 | 精品影院| 久久成人18免费网站 | 韩日精品一区 | 成人午夜毛片 | 欧美精品一区二区三区四区 | 亚洲在线电影 | 一级免费视频 | 久久成人免费 | 成年免费观看 | 亚洲精品视频在线免费 | 日本成人一区 | 日本中文字幕在线视频 | 在线国产一区二区 | 久久久精品网站 | 一本久道视频一本久道 | 992人人tv香蕉国产精品 | 国产欧美日韩综合精品一区二区 | 免费一级视频在线观看 | 欧美在线观看禁18 | 日韩国产精品一区二区三区 | 一区二区三区中文字幕 | 亚洲五月婷婷 | a v黄色| 亚洲欧美成人a毛片 | 毛片网页| 一区二区久久 | 久久国产精品免费一区二区三区 | 亚洲精品久久久久久久久久久 | 久久国产精品二区 | 亚洲日本视频 | 亚洲精品视频在线观看免费视频 | 免费观看www免费观看 | 国产精品久久久久aaaa | 欧美一级特黄aaaaaa大片在线观看 | 国产精品一级 | 天天爽夜夜爽夜夜爽精品视频 | 91精品国产色综合久久 | 欧洲精品二区 |