java - 为什么在runnable接口(interface)中运行用abstract关键字定义的方法

标签 java

这个问题可能很愚蠢,但我不小心检查了 java 源代码,runnable 接口(interface)中的 run 方法是用 abstract 关键字定义的。 但是根据接口(interface)定义,接口(interface)中的所有方法默认都是抽象的。 然后我很困惑为什么 Runnable 接口(interface)特别有 run 方法的抽象关键字。 我检查了其他接口(interface),如 map 、 list 等,但没有人有 abstract 关键字。

请给我一个想法,为什么它在 java 源代码中是这样写的。

public abstract void run();

谢谢

最佳答案

'public' 声明也是多余的,因为默认情况下所有符号在接口(interface)中都是公共(public)的。

大概是习惯这样写吧。我想 Runnable 是在 JDK 1.0 中构想的第一批接口(interface)之一,那时,接口(interface)的声明默认值可能还没有完全灌输到 JDK 开发人员的脑海中。我记得在 James Gosling 的一次采访中读到,在 Oak(后来成为 Java 的项目名称)中,曾经没有接口(interface),只有像 C++ 这样的抽象类,这可能是它的后遗症。

我有时也会为接口(interface)方法和常量写“public”,尽管这不是必需的。

关于java - 为什么在runnable接口(interface)中运行用abstract关键字定义的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3289767/

相关文章:

java - 删除 .docx 文件中的图像

java - 在 JSF 中显示通过 SQL 填充的 ArrayList

java - 对字符串数组列表进行排序

java - 从字符串中删除 div 标签

java - tomcat access-logs中MDC相关内容

java - 更改字体时 JTabbedPane 选项卡标题保留填充

Java无法从pom中读取变量

java - 在 Java 中关闭框架

java - 是否可以在不更改方法主体的情况下编译通用可变参数方法?

java - 马文: "NoClassDefFoundError: com/jogamp/newt/event/KeyListener"