“Ruby中不需要接口和抽象类” 这句话是什么意思?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

我试图围绕Ruby来讨论我的问题,并且我正在努力的一件事是缺乏接口/抽象类的支持。从谷歌搜索的角度来看,我不断看到的与抽象类相关的Ruby问题的回应是“你用Java思考,Ruby不能这样工作”

那么,如何在没有接口/抽象类的Ruby中工作呢?

例如,在Java中,我可能会创建一个抽象类“book”,其子类为“novel”,“textbook”和“journal”。我有很多常用的功能,但我不希望它直接访问 - 一本书必须是小说,教科书或杂志。

在ruby中,我会如何写出这种功能?

提问于
用户回答回答于

我也是Ruby的新手。根据我的理解,ruby中抽象类更为接近的是module。你不能创建任何模块的实例,但你可以包含另一个类。所以目标类将获得父项的全部功能

  module Log
    def write
      //blah
    end
  end

  class EventLog
    include Log

    def Prepare
    end
  end

在像Java/C#这样的静态类型语言中,Interfaces强制这些类在编译时拥有所有的方法。由于Ruby是动态的,所以它没有任何意义。

用户回答回答于

扫码关注云+社区