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

Java抽象接口

童华池
2023-03-14
问题内容

考虑一个示例(在Java中编译)

public abstract interface Interface {
    public void interfacing();
    public abstract boolean interfacing(boolean really);
}

为什么必须将接口“声明”为抽象的?还有其他适用于抽象接口的规则吗?

最后:如果abstract过时了,为什么将它包含在Java中?有抽象接口的历史吗?


问题答案:

为什么必须将接口“声明”为抽象的?

不是。

public abstract interface Interface {
       \___.__/
           |
           '----> Neither this...

    public void interfacing();
    public abstract boolean interfacing(boolean really);
           \___.__/
               |
               '----> nor this, are necessary.
}

接口及其方法是隐式的abstract,添加该修饰符没有区别。

还有其他适用于抽象接口的规则吗?

不,适用相同的规则。该方法必须由任何(具体)实现类来实现。

如果抽象已经过时,为什么它包含在Java中?有抽象接口的历史吗?

有趣的问题。我挖出了第一 JLS的版本,甚至还有它说:“这个修改是过时的,不应该在新的Java程序中使用”。

好的,进一步挖掘 …碰到许多断开的链接后,我设法找到了原始的Oak 0.2 规范(或“手册”)的副本。我必须说非常有趣的阅读,总共只有38页!:-)

在第5节“接口”下,它提供以下示例:

public interface Storing {
    void freezeDry(Stream s) = 0;
    void reconstitute(Stream s) = 0;
}

边上说

将来,接口中声明方法的“ = 0”部分可能会消失。

假设=0abstract关键字替换,我怀疑abstract接口方法在某些时候是必需的!



 类似资料:
  • 问题内容: 在面试中,有人问我以下问题。我试图回答这个问题,但是我想确切回答这个问题。 如果我可以将Abstract类模拟为Interface,为什么Java提供了Interface? 这意味着如果在Abstract类中我可以将所有方法标记为abstract,然后abstract类将用作接口,那么为什么我需要接口。 谁能简单地解释一下我。 问题答案: 这是一个非常标准的面试问题。答案是:因为您可以

  • 我想读关于抽象的文章,但读到不同的文章,我感到很困惑。 下面是我无法理解的问题: 1)“抽象是通过使用抽象类和接口实现的吗?”我对此进行了搜索,得到了三种类型的答案: 与此处解释的不同。 它们是相同的,只是不同的观点,就像这里解释的。 最后一个是抽象类用来实现抽象。 哪一个是真的?请举一个简单的例子。 2)“抽象意味着隐藏不必要的细节。比如专注于一个对象做什么而不是它是如何完成的。” 这是正确的吗

  • 问题内容: 我对Java中的抽象有点困惑。 我检查了许多页面,指出抽象是数据隐藏(隐藏实现)。 我对抽象的理解是“部分实现”。只需在抽象类/接口中定义所需的内容,然后扩展/实现它们并添加您自己的功能即可。 我不明白这是怎么隐藏数据的?实现类/接口后,您将可以访问代码,并将根据需要对其进行修改。 我已经检查了许多问题,关于此的文章,但对此仍然感到困惑。 任何帮助表示赞赏。谢谢。 问题答案: 也许有一

  • 问题内容: 我是一名 Java 开发人员,对Object Orientation概念有很好的了解( 或者也许我这样认为 )。现在我正在学习设计模式(从头开始设计模式)。我一直在阅读有关OOPS概念抽象的文章,以简要地理解它,而阅读更多有关它的内容,使我比以前更加困惑。 据我了解,抽象是指隐藏程序的内部细节,同时将接口暴露给其他程序员,而无需担心内部细节。但是我不明白 抽象类如何适应这种抽象概念,其

  • 问题内容: 我有许多类,它们都共享相同的方法,只是实现方式不同。在Java中,让这些类中的每一个实现一个接口或扩展一个抽象类都是有意义的。Python是否有与此类似的东西,还是我应该采用其他方法? 问题答案: Python接口背后有一个故事。多年来一直保持主导地位的原始态度是您不需要它们:Python在EAFP(更容易要求宽恕而不是允许)原则上工作。也就是说,无需指定接受一个I​​Closeno

  • 我有两个方法和抽象类的接口,它们实现了这个接口并从它重写了一个方法。我可以实例这个抽象类,而不重写接口的其他方法吗?或者我可以用具有另一个签名的方法替换此方法吗? UPD:谢谢你的回答,我真的在我的问题上犯了错误。我是否可以使用匿名类来扩展我的抽象类,而不重写来自实现的所有方法?我如何理解DragonK的回答,不,我需要创建类,这将是扩展抽象类和重写其他方法?