当前位置: 首页 > 面试题库 >

为什么有人将Java接口方法声明为抽象方法?

周高畅
2023-03-14
问题内容

今天,我使用了Eclipse的“拉接口”重构功能来创建基于现有类的接口。该对话框提供了将新界面的所有新方法创建为“抽象”方法的功能。

那会有什么好处?

我认为,允许您将接口方法声明为抽象的事实是该语言的多余且无害的功能,因此不建议特别提倡。

为什么Eclipse支持这种样式,或者为什么有人自愿选择支持这种样式?

澄清:我不是在问为什么接口方法是抽象的,这是显而易见的。我想问为什么人们会明确选择将它们标记为抽象,因为如果它们在接口中,它们无论如何都是抽象的。


问题答案:

根据Java语言规范,abstractinterface
的关键字已过时,不应再使用。(第9.1.1.1节)

也就是说,由于Java具有向后兼容性的倾向,因此我真的怀疑,是否abstract存在关键字是否会有所不同。



 类似资料:
  • 问题内容: 将接口声明为抽象有什么意义?接口方法也是如此。有什么意义吗? 例如。 问题答案: 您在哪里遇到过已发布的代码块,任何旧的Java代码库? 这就是 JLS不得不说: 9.1.1.1抽象接口: 每个接口都是隐式抽象的。该修饰符已过时,不应在新程序中使用。 9.4抽象方法声明: 为了与Java平台的较早版本兼容,出于风格考虑,允许但不鼓励为接口中声明的方法冗余地指定abstract修饰符。

  • 问题内容: 我想这样做,但我不能。这是我的情况和理性。我有一个用于测试用例的抽象类,该类具有一个称为test()的抽象方法。test()方法由子类定义;它应使用特定应用程序的逻辑来实现,例如。我不希望直接调用test()方法,我希望超类调用test()方法,而子类可以调用调用此方法的方法(并且还可以进行其他工作,例如设置当前例如在执行测试之前的日期时间)。示例代码: 然后扩展这个。 然后调用它。

  • 问题内容: 我了解抽象类中的方法都可以是抽象的,也可以不是。但是,为什么不能在“普通”的非抽象类中创建抽象方法呢? 在此先感谢您的解释! 问题答案: 抽象 方法从根本上说,该方法没有实现,需要在 子类中 实现。但是,如果您在 非抽象 类中具有 抽象 方法,则可以实例化该类并获取一个对象,该对象将具有未实现的方法,您将无法调用该方法。 __

  • 问题内容: 我注意到有些人喜欢将对象声明为它实现的接口之一, 即使在变量的范围内,也不必将其视为接口 ,例如,没有期望接口的外部API。 例如: 或者你可以做 并避免完全导入。 与类本身(第二个)相反,通过接口(上面的第一个)声明它有什么好处? 谢谢 问题答案: 如果以后不使用该变量,则没有优点/缺点。使用接口而不是对象的原因是为了提供更大的灵活性,但是,如果不使用该变量,则与性能方面没有什么区别

  • 问题内容: 这个问题已经在这里有了答案 : 受接口保护 (13个答案) 2年前关闭。 当我实现一个方法时,我被迫使其成为一个方法。 在某些情况下,我们可能想要使用(例如,在同一软件包中进行访问的情况)或。 谁能解释这个限制的原因? 问题答案: 接口旨在定义一种类型的 公共 API,仅此而已,而不是其实现。因此,您在接口中定义的任何方法(或静态成员)都是按定义。 由于接口不能包含任何具体的实现,因此

  • 问题内容: 如果该方法可以声明为静态方法,则会向编译器发出警告。 [edit] Eclipse帮助中的确切引号,重点是私有和最终的: 启用后,编译器将为私有或最终方法(仅引用静态成员)发出错误或警告。 是的,我知道我可以将其关闭,但是我想知道打开它的原因吗? 为什么将每个方法都声明为静态是一件好事? 这会给性能带来任何好处吗?(在移动域中) 指出一种方法是静态的,我想表明您不使用任何实例变量,因此