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

为什么接口优先于抽象类?

严永丰
2023-03-14
问题内容

我最近参加了一次采访,他们问我一个问题:“为什么接口比抽象类更受青睐?”

我尝试给出一些答案,例如:

  • 我们只能获得一种扩展功能
  • 他们是100%抽象
  • 实现不是硬编码的

他们要求我使用您使用的任何JDBC API。“它们为什么是接口?”。

我可以为此得到更好的答案吗?


问题答案:

该面试问题反映出提出该问题的人的某种信念。我相信这个人是错的,因此您可以选择两个方向之一。

  1. 给他们他们想要的答案。
  2. 完全不同意。

他们想要的答案很好,其他海报很好地强调了那些。多重接口继承,继承迫使类做出实现选择,接口可以更容易地改变。

但是,如果您在异议中提出令人信服(且正确)的论点,则面试官可能会注意。首先,强调有关接口的积极方面,这是必须的。其次,我想说接口在许多情况下都更好,但是它们也会导致代码重复,这是负面的。如果您有各种各样的子类,它们将在很大程度上实现相同的实现,再加上额外的功能,那么您可能需要一个抽象类。它使您可以拥有许多具有细粒度细节的类似对象,而只有接口,您就必须拥有许多具有几乎重复的代码的不同对象。

接口有许多用途,并且有令人信服的理由认为它们“更好”。但是,您应该始终使用正确的工具进行工作,这意味着您无法注销抽象类。



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

  • 问题内容: 我在服务器上有一个网站。主页为example.com/index.php。 好的,我将一个index.html命名文件上传到服务器(根目录),当我在浏览器的URL栏中键入站点的域时,感到很惊讶,因为index.html页面已加载。 (example.com-> example.com/index.html)所以不是我想要的。 我的问题:为什么会这样?为什么index.html比inde

  • 问题内容: 我最近才发现我认为这里有些奇怪。为什么会这样,并且处于不同的优先级?我会以为他们处于同一水平。以上证明了这一点。即使从左到右的求值对第一个给出的都是假,而第二个则给出的是真,这两个陈述都是正确的。 有人知道这背后的原因吗? (顺便说一句,我只是在这里使用了很多括号,但是是旧代码提出了这个问题) 问题答案: 因为在传统的数学表示法中,(逻辑合取)的优先级高于(逻辑合取)。 出于显而易见的

  • 所以我的问题是为什么not Queue比list更受欢迎。我相信一定有某种原因,但不知何故,我错过了这种理解? 更新:-这是我明确的要求 1)加法发生在末尾,应该很快。可能是O(1) 3)由于查找将基于om索引进行,因此两者都将是O(1)

  • (1)接口 接口使用interface修饰; 接口不能实例化; 类可以实现多个接口; ①java8之前,接口中的方法都是抽象方法,省略了public abstract。②java8之后;接口中可以定义静态方法,静态方法必须有方法体,普通方法没有方法体,需要被实现; (2)抽象类 抽象类使用abstract修饰; 抽象类不能被实例化; 抽象类只能单继承; 抽象类中可以包含抽象方法和非抽象方法,非抽象

  • 本文向大家介绍接口和抽象类的区别是什么?相关面试题,主要包含被问及接口和抽象类的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 考察点:抽象类 Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于: 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。 类可以实现很多个接口,但是只能继承一个抽象类 类可以不实现抽象类和接口声明的所有方法,当然,在这种情