我在某些StackOverflow答案中看到了术语抽象方法,具体方法和默认方法的“不同”定义。
Java语言规范给出的真正定义是什么?请在您的答案中包括相关的支持JLS参考。
根据JLS 8.4.3.1
“不是
abstract
的方法可以称为具体方法。”
但是JLS 9.4说:
默认方法不同于在类中声明的具体方法(第8.4.3.1节),也不同于既不继承也不被覆盖的私有接口方法。
所以实际上,我们有三种类型的方法:抽象,具体和默认方法。
请注意,JLS在抽象方法与具体方法之间的区别中未提及final
或static
。但是,这些修饰符不能与abstract
关键字一起使用。这意味着static
或final
的方法必须是具体方法。这加强具体方法的8.4.3.1定义。