0
A
回答
12
简而言之,你不能继承接口,因为接口只提供抽象,而不是功能。从下面的评论
注意事项(感谢@马克Peters和@qqilihq):
- Interfaces can inherit from interfaces
- 既抽象类和接口都继承的形式,但目前只有抽象类支持代码继承。接口提供类型继承。在Java 8中,接口也会提供代码继承。
您还可以检查Official Java Tutorials,这是Java知识的一个很好的起点。
3
这是因为抽象类和接口本质上是不同类型的对象。抽象类定义了功能,而继承则作为框架。
编辑:正如我上面贴只要你想,你可以继承多个接口,但只有一个抽象类
0
的Java支持通过EXTENDS
关键字只有单继承。这个想法是,你可以从同一个类的多个接口“继承”。
因此,IMPLEMENTS
关键字用于“继承”一个接口。
IMPLEMENTS
一个接口可以访问接口中所有声明的类。
0
其实你可以继承接口 - 但只能扩展它们的接口。
您可以创建abstract
类来完成接口所需的部分或全部工作。
然后你可以extend
你的abstract
类来做真正的类。如果您愿意,甚至可以从抽象类中覆盖功能。
// close
interface Closeable {
public void close();
}
// open and close
interface Openable extends Closeable {
public void open();
}
// Simplistic implementation
abstract class AbstractCloseable implements Closeable {
@Override
public void close() {
System.out.println(this.getClass().getSimpleName() + "-close");
}
}
// Simplistic implementation
abstract class AbstractOpenable extends AbstractCloseable implements Openable {
boolean open = false;
@Override
public void open() {
System.out.println(this.getClass().getSimpleName() + "-open");
open = true;
}
@Override
public void close() {
super.close();
open = false;
}
}
class PortHole extends AbstractOpenable implements Openable {
public void clean() {
if (!open) {
System.out.println(this.getClass().getSimpleName() + "-clean");
} else {
System.out.println(this.getClass().getSimpleName() + "-fall out");
}
}
}
public void test() {
System.out.println("Hello");
PortHole p = new PortHole();
p.open();
p.clean();
p.close();
p.clean();
}
打印:
PortHole-open
PortHole-fall out
PortHole-close
PortHole-clean
相关问题
- 1. 为什么我不能从私有类/接口继承?
- 2. 为什么泛型方法不能用于继承和接口?
- 3. 为什么继承接口的成员不能使用反射?
- 4. 为什么一个结构允许接口继承,为什么一个类不能继承
- 5. 从接口继承
- 6. 为什么我不能继承datetime.date?
- 7. 为什么我不能继承IO.Directory?
- 8. 为什么不能继承SqlDataReader类?
- 9. Java为什么我不能使用具有功能接口的多重继承
- 10. 为什么多重继承不是接口的主要目的?
- 11. Zope接口继承:为什么不在interface.providedBy()中显示?
- 12. 为什么FormatException不会从ArgumentException继承?
- 13. 为什么不从ifstream继承
- 14. 原型继承为什么子对象不能从父对象继承方法?
- 15. 从接口变量继承?
- 16. 为什么不能shared_ptr解析函数接口中的继承关系?
- 17. 接口继承
- 18. 为什么多个类继承钻石问题和多接口继承没有?
- 19. 为什么java类不会从已实现的接口继承注释?
- 20. 接口继承接口
- 21. 为什么不能从内部类继承公共类?
- 22. Java为什么禁止继承内部接口?
- 23. 为什么使用接口继承时动态绑定失败?
- 24. 静态接口变量得到继承.........为什么?
- 25. C++接口继承
- 26. F#继承接口
- 27. C#继承/接口
- 28. Java接口继承
- 29. C#接口继承
- 30. ninject继承接口
你的前提是错误的。你*可以*从接口继承。你目前不能从接口继承*实现*,但这一切都与接口没有实现让你继承的事实有关。 –