国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 扎赉特旗| 商洛市| 福鼎市| 台南县| 吐鲁番市| 瑞安市| 阿城市| 新绛县| 太白县| 禹州市| 高阳县| 长岛县| 贡觉县| 西城区| 方城县| 吴堡县| 永和县| 古交市| 淮安市| 集安市| 五原县| 宝坻区| 若尔盖县| 祁阳县| 乌拉特中旗| 通辽市| 恩平市| 天长市| 伊吾县| 江门市| 南华县| 米易县| 阜新| 六枝特区| 华容县| 邹平县| 奎屯市| 永安市| 德保县| 资阳市| 康定县|