在Ruby中设置抽象超类

时间:2014-02-18 11:55:34

标签: ruby class extend superclass

我对此很新,我试着去谷歌,但我似乎无法弄清楚这是如何运作所以我在这里问这个问题:(...

实际上很简单,我只需要这样的语法:

 Class Player <- An abstract super class representing a player object
 Classes Human and Computer <- Classes extending the super class Player

Dat's it!它应该是一个简单的,你们可以让我直接将描述翻译成Ruby语法或其他一些例子来帮助我。

另外还有一个问题,对于一个抽象超类来说,定义一个与普通类相同的实例方法?因为正常的课程通常如下:

def Method1(parameters)
     blah blah blah;
end
提前谢谢!

2 个答案:

答案 0 :(得分:2)

在Ruby中,您没有定义抽象类的关键字abstract。如果需要封装要在不同类之间共享的功能,可以将其提取到模块中,并mix将其添加到类中。

例如:

module Player
  # shared functionality
end

class Human
 include Player
end

class Computer
  include Player
end

这很有效,因为抽象,与任何特定实例分离,只是可以通过许多不同方式实现的构造。不同的语言选择更加明确,红宝石更隐含。

答案 1 :(得分:1)

已经有很多问题: How to implement an abstract class in ruby?

简而言之,Ruby中没有抽象类,但如果需要,可以模拟em