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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

簡單談?wù)凴uby的private和protected

2019-10-26 19:28:37
字體:
供稿:網(wǎng)友

下面這段程序讓我糾結(jié)了很久,Ruby中private的概念真的很奇怪。。。

class Test private def test_print  puts 'test' endendclass Test2 < Test def test_print2  # self.test_print #=> 這里加上self就不能調(diào)用,private method `test_print' called for # (NoMethodError)  test_print #=> 不加self就能調(diào)用 endendTest2.new.test_print2 

為什么不加self的話,private也可以調(diào)用父類的方法呢?

原來在Ruby中,private和Java或者其他語言不一樣,子類也可以調(diào)用,只是不能指定調(diào)用者。

翻了下《The Ruby Way》,書上說:

private:類和子類都能調(diào)用,但是private方法不能指定調(diào)用者,默認(rèn)為self。
protected:類和子類都能調(diào)用,可以指定調(diào)用者。

這就解釋了為什么上面的代碼中,用self調(diào)用會出錯,而不加self就能正確執(zhí)行。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 德江县| 东阳市| 克山县| 峨眉山市| 汉沽区| 即墨市| 格尔木市| 寻甸| 巫山县| 新乡市| 合川市| 遂川县| 合作市| 东阳市| 平邑县| 安宁市| 财经| 托克托县| 宜城市| 高州市| 逊克县| 闸北区| 麻阳| 芷江| 吴旗县| 泸水县| 阳新县| 沈阳市| 湾仔区| 册亨县| 望谟县| 本溪市| 雅江县| 伊春市| 吴川市| 远安县| 阿鲁科尔沁旗| 博客| 遂宁市| 合山市| 乐昌市|