“Ruby中不必要的接口和抽象类” – 有人可以解释吗?

我试图围绕Ruby包围我的头,我正在努力的一件事是缺少接口/抽象类支持.从谷歌搜索,我不断看到抽象类相关的Ruby问题的答案是“你在Java中思考,Ruby不工作”

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

例如,在Java中,我可以创建一个抽象类“book”,子类“小说”,“教科书”和“日志”.有很多共同的功能,我扔在“书”,但我不希望它可以直接访问 – 一本书必须是小说,教科书或杂志.

在红宝石中,我该如何写出这种功能

解决方法

我也是红宝石启动器.根据我的理解,红宝石中的抽象类有更密切的对手.那就是模块.您不能创建任何模块实例,但您可以包含另一个类.所以一个目标类将获得父类的全部功能
module Log
    def write
      //blah
    end
  end

  class EventLog
    include Log

    def Prepare
    end
  end

在静态类型的语言(如java / C#)中,Interfaces执行这些类以使编译时具有所有的方法.由于Ruby是动态的,所以没有意义.

为了更清楚,请检查这些帖子为什么动态语言不需要接口..

> why-dont-we-require-interfaces-in-dynamic-languages
> why-do-dynamic-languages-like-ruby-and-python-not-have-the-concept-of-interfaces

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...