我在某些StackOverflow答案中看到了术语抽象方法,具体方法和默认方法的“不同”定义。
Java语言规范给出的真正定义是什么?请在您的答案中包括相关的支持JLS参考。
根据JLS 8.4.3.1:
“
abstract
方法声明将方法引入为成员,提供其签名(第8.4.2节),结果(第8.4.5节)和throws子句(如有)(第8.4.6节),但不提供一种实现(第8.4.7节)。不是abstract
的方法可以称为concrete方法。“
根据JLS 9.4:
“默认方法是在接口中使用
因此,根据此分类法,实际上有四种方法:default
修饰符声明的实例方法。其主体始终由一个块表示,该块为实现该接口的任何类提供默认实现,而不覆盖该方法。方法与在类中声明的具体方法(第8.4.3.1节)和私有接口方法均不同,后者既不继承也不被重写。“]]
final
或static
。 这些修饰符不能与abstract
关键字一起使用。这意味着static
或final
的方法必须是具体方法。这
加强
具体方法的8.4.3.1定义。任何类都可以声明为abstract
,因此,不能创建该类的任何实例。