“抽象方法”,“具体方法”和“默认方法”在Java中是什么意思?

问题描述 投票:0回答:1

我在某些StackOverflow答案中看到了术语抽象方法具体方法默认方法的“不同”定义。

Java语言规范给出的真正定义是什么?请在您的答案中包括相关的支持JLS参考。

java default abstract jls concrete
1个回答
0
投票

根据JLS 8.4.3.1

“不是abstract的方法可以称为具体方法。”

但是JLS 9.4说:

默认方法不同于在类中声明的具体方法(第8.4.3.1节),也不同于既不继承也不被覆盖的私有接口方法。

所以实际上,我们有三种类型的方法:抽象,具体和默认方法。


请注意,JLS在抽象方法与具体方法之间的区别中未提及finalstatic。但是,这些修饰符不能与abstract关键字一起使用。这意味着staticfinal的方法必须是具体方法。这加强具体方法的8.4.3.1定义。

© www.soinside.com 2019 - 2024. All rights reserved.