在Java中,只有子类重写接口方法
我知道实现某些Interface
的每个类都必须重写其所有方法。除非当前类是abstract
正如你所看到的,下面提到的代码模板演示了这一点
在我的例子中,只有ChildClass
重写foo()
方法
界面
public interface MyItf {
public void foo();
}
父类
public abstract class ParentClass implements MyItf {
}
儿童班
public class ChildClass extends ParentClass{
@Override
public void foo() {
}
}
但是这个实现要求我将ParentClass
类设置为abstract
如果我想让ParentClass
成为单个类而不是抽象类,该怎么办
有没有人有其他方法,只有子类使用MyItf
,而不是父类
谢谢——
[编辑]
根据所有答案,我找到了解决方案:
我编写了一个游戏,我有140个儿童班
为了使代码更灵活,我需要创建“空”接口,并允许所有孩子实现它,比如:
public interface UnknownItf {
}
所以下一次如果我需要给孩子们添加新的界面,我会写:
public interface UnknownItf extends NewItf{
///...
}
# 1 楼答案
你不能——你已经声明它实现了接口,但是你没有提供任何实现
换句话说,您希望这段代码做什么
如果
ParentClass
是具体的,那就必须编译。。。但是您没有提供foo
的实现如果只希望子类实现
MyItf
,那么就不要声明超类实现了它。如果你试图强迫所有的子类来实现它,而不是超类,并且你不希望超类是抽象的,那么我恐怕没有办法做到这一点——即使这是可能的,这也是一个有问题的设计。(它有什么用处?)