我知道 Ruby 中没有抽象类的概念。但如果需要实施的话,我该如何实施呢?我尝试过这样的事情:
class A
def self.new
raise 'Doh! You are trying to write Java in Ruby!'
end
end
class B < A
...
...
end
但是,当我尝试实例化 B 时,它会在内部调用A.new
这将引发异常。
此外,模块不能被实例化,但也不能被继承。将新方法设为私有也不起作用。
有人有任何指点吗?
只是为了在这里插话,我认为没有理由阻止某人实例化抽象类,特别是因为他们可以动态添加方法.
鸭子类型语言(例如 Ruby)使用运行时方法的存在/不存在或行为来确定是否应该调用它们。因此你的问题,因为它适用于摘要method, 说得通
def get_db_name
raise 'this method should be overriden and return the db name'
end
故事到此就应该结束了。在 Java 中使用抽象类的唯一原因是坚持某些方法得到“填充”,而其他方法则在抽象类中具有其行为。在鸭子类型语言中,重点是方法,而不是类/类型,因此您应该将担忧转移到该级别。
在你的问题中,你基本上是在尝试重新创建abstract
来自 Java 的关键字,这是在 Ruby 中执行 Java 的代码味道。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)