JLS 2.13.1接口修饰符
接口不能是最终的,因为这样的类的实现永远无法完成.
如果我可以在接口I中编写创建静态内部类,可以在其中提供实现,那么为什么会有这样的限制
interface Type {
// Normal
class Value {
private Value() {
}
public void print() {
System.out.println("Test");
}
}
public final Value value = new Value();
}
Run Code Online (Sandbox Code Playgroud)
在接口中你根本不能提供任何形式的实现:甚至不是静态方法.使任何方法最终都没有意义,因为它们尚未实现.
如果让我说我有一个名为的接口IExample及其具体实现Example:
interface IExample{
public final void run();
}
class Example implements IExample{
// wait! I can't override because it's final! but it's yet to be implemented?!
public void run(){
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句:首次定义此限制时,嵌套类不可用,因此真正的问题可能是为什么没有取消此限制。
一个final类不能有任何子类。仅使用接口来定义子类的方法被认为是最佳实践,因此两者是矛盾的。
您可以将接口用于其他用途
但这些对于接口的目的来说是附带的。