根据JLS,“抽象方法”,“具体方法”和“默认方法”是什么?

问题描述 投票:4回答:3

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

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

java default abstract jls
3个回答
4
投票

根据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节)和私有接口方法均不同,后者既不继承也不被重写。“]]

因此,根据此分类法,实际上有四种方法:

    抽象方法,
  • 具体方法,
  • 默认方法和
  • 专用接口方法

  • 请注意,JLS 8.4.3.1在抽象方法与具体方法之间的区别中未提及finalstatic

这些修饰符不能与abstract关键字一起使用。这意味着staticfinal的方法必须是具体方法。这

加强

具体方法的8.4.3.1定义。

0
投票
抽象方法

-2
投票

任何类都可以声明为abstract,因此,不能创建该类的任何实例。

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