如何强制子类在Ruby中实现方法.Ruby中似乎没有抽象关键字,这是我在Java中采用的方法.还有其他更像Ruby的方法来执行抽象吗?

推荐答案

抽象方法在Ruby中不太有用,因为它不是强静态类型.

然而,我就是这么做的:

class AbstractThing
  MESS = "SYSTEM ERROR: method missing"

  def method_one; raise MESS; end
  def method_two; raise MESS; end
end

class ConcreteThing < AbstractThing
  def method_one
     puts "hi"
  end
end

a = ConcreteThing.new
a.method_two # -> raises error.

然而,这似乎很少有必要.

Ruby相关问答推荐

如何通过语法将Ruby Sorbet签名突出显示为不强调的 comments ?

CarrierWave Multi-uploader重命名现有文件

如何使用 gsub 删除返回字符串中的/和/i?

碰撞检测测试中对象的 Nil 类

Rb:仅通过在 Ruby 中的类上添加 each 方法,可枚举模块是如何工作的?

是否应该在生产时缩小服务器代码?

get.chomp() 与 STDIN.gets.chomp() 有什么区别?

如何记录在 Ruby 程序中调用的每个方法?

为什么 ruby​​ 在 Windows 上这么慢?

如何将哈希保存到 CSV

如何将参数传递给 array.map 快捷方式?

在 ruby​​ 中访问嵌套哈希的元素

符号到字符串问题

理解|| Ruby 中 If 条件中的 OR 运算符

从类对象获取类位置

如何在Ruby中对数组中对象的属性求和

带有添加和删除参考的 Rails 迁移

Xcode - 配置:错误:在 $PATH 中找不到可接受的 C 编译器

如何在没有警告的情况下重新定义 Ruby 常量?

从数组 Ruby 中删除元素