欢迎访问 生活随笔!

生活随笔

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

c/c++

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

发布时间:2025/5/22 c/c++ 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 ruby的module与Java的interface以及C++的friend 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

   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的功能。

    转载于:https://blog.51cto.com/sanqianyuejia/1131218

    总结

    以上是生活随笔为你收集整理的ruby的module与Java的interface以及C++的friend的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。