【发布时间】:2015-01-30 22:41:11
【问题描述】:
我有
ISomeInterface
public interface ISomeInterface{
public void myMethod();
}
抽象类
public abstract class AbstractClass implements ISomeInterface{
public void myMethod(){
//...here goes implemetations
}
}
具体类
public class ConcreteClass extends AbstractClass {
//...
}
编译器打印的ConcreteClass 不是抽象的,并且不会覆盖ISomeInterface 中的抽象方法myMethod。
这个想法是给一个抽象类实现,然后在扩展它的类中继承它。
我认为ConcreteClass 应该得到实现形式AbstractClass,因为它正在扩展它。对?怎么了?
更新
直到现在我才注意到method 是错误的,它必须是myMethod。无论如何,同样的错误。
更新2
问题是在 AbstractClass 中,它们的方法名称正确但签名不正确。根据界面更改后问题解决了:)
【问题讨论】:
-
在
AbstractClass中对myMethod使用@Override注释有助于识别此错误。 -
这很奇怪。您使用的是哪个编译器?使用Oracle官方编译器,编译无误
-
你现在改变了你的问题并说如果你在接口和类中都有相同的方法名,你会得到同样的错误。如果你有相同的方法名和相同的大小写敏感,你不会得到关于它没有在 ConcreteClass 中实现的错误。仔细检查您对代码的更新。
标签: java