日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

ruby的module与Java的interface以及C++的friend

發(fā)布時間:2025/5/22 c/c++ 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ruby的module与Java的interface以及C++的friend 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ?ModuleRuby一個非常好用的功能,它跟Class類別非常相似,你可以在里面定義方法。只是你不能用new來建立它。它的第一個用途是可以當做Namespace來放一些工具方法:

  • module?MyUtil???????
  • ????def?self.foobar?
  • ????puts?"foobar"?
  • ??end??
  • end???
  • ?
  • MyUtil.foobar?#?輸出?foobar?
  • ? ? ? ? 另一個更重要的功能是Mixins,可以將一個Module混入類別之中,這樣這個類別就會擁有此Module的方法。這回讓我們拆成兩個wenji,debug.rb和foobar.rb,然後在foobar.rb中用來引用debug.rb:

    ? ? ? ? 首先是debug.rb:

  • module?Debug??????
  • ????def?who_am_i??
  • ????????puts?"#{self.class.name}:?#{self.inspect}"??????
  • ????end??
  • end?
  • 然后是foobar.rb:

  • require?"./debug"??
  • class?Foo??????
  • ????include?Debug?#?這個動作叫做?Mixin??
  • end???
  • ?
  • class?Bar??????
  • ????include?Debug??
  • end?
  • ?
  • a?=?Foo.new??
  • b?=?Bar.new??
  • a.who_am_i??#?輸出?Foo:?#<Foo:0x00000102829170>??
  • b.who_am_i??#?輸出?Bar:?#<Bar:0x00000102825b88>?
  • ? ? ? ?Ruby使用Module來解決多重繼承的問題,不同類別之間只要擁有相同的方法,就可以改放在Module里面,然后include它即可。

    ? ? ? ? Java中的interface可以解決多重繼承的缺陷,C++是支持多重繼承的,而且有一個元友的概念。我認為ruby的include module更像C++的friend class的功能。

    轉(zhuǎn)載于:https://blog.51cto.com/sanqianyuejia/1131218

    總結

    以上是生活随笔為你收集整理的ruby的module与Java的interface以及C++的friend的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。