在Java 1.8中添加默认方法后,接口是否仍然保持完全抽象?
如果我没有清楚地表述问题,我很抱歉。
如果我没有清楚地表述问题,我很抱歉。
JLS8 §9.1.1.1. (抽象接口)明确规定(重点标记为我的):
每个接口都是隐式抽象的。这个修饰符已经过时,不应在新程序中使用。
此外,“完全抽象”这个术语对我来说没有意义。它应该意味着什么? “部分抽象”意味着什么? 没有这样的概念。
default
方法具有特殊用途。从Java文档中可以看到:
因此,您应该明智地使用默认方法使您能够向库的接口中添加新功能,并确保与为旧版本那些接口编写的代码具有二进制兼容性。
default
方法。default
方法”?我不一定不同意,但我不明白你的断言是如何从引文中得出的。 - dimo414public interface OldInterface {
public void existingMethod();
}
public interface OldInterface {
public void existingMethod();
default public void newDefaultMethod() {
System.out.println("Default Interface method added in Java 8");
}
}
以下类将正常工作:
public class OldInterfaceImpl implements OldInterface {
public void existingMethod() {
// existing implementation is here…
}
}
OldInterfaceImpl obj = new OldInterfaceImpl ();
// print “New default method add in interface”
obj.newDefaultMethod();