我知道在Java中,注解检查超类是否有方法:
class Animal {
public void speak () {
System.out.println("Hello!");
}
}
class Dog extends Animal {
@override
public void eat () { //this kind of stuff
System.out.println("omnomnom");
}
}
在Ruby中有没有办法做到这一点(作为一个函数或其他东西)?
4条答案
按热度按时间8wigbo561#
这将是相对容易的一个类方法定义的顶级特征类。
上面将打印
这里对
override
的调用类似于对Module#module_function
的带参数调用,可以放置在代码中的任何位置,并根据需要接受任意多个方法名。它也可以用eigenclass示例变量来完成,使它看起来更像java版本。
在
TracePoint
和/或Module#method_added
的帮助下,也可以 * 完全 * 复制Java语法,但我发现它不太明确,并且会避免直接传递方法名,如上所示。sbtkgmzw2#
这是可行的,但它有点冗长:
演示如何使用它:
z8dt9xmd3#
只是要抛出这个旧的要点(我的),实现的行为:
https://gist.github.com/kares/7434811
可以与参数
override :foo
一起使用,也可以简单地作为next方法的标记:p4rjhz4m4#
以answer of Aleksei Matiushkin为例,您可以通过将其移动到模块中来提高其可重用性。
可以在基类
Animal
中扩展模块,这样所有从Animal
继承的子类都有override
方法。或者你可以选择只扩展一个特定的子类。或者假设上面没有设置。