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

抽象类可以/可以代替接口吗?

祁奇略
2023-03-14
问题内容

在Java中,您可以创建一个仅包含抽象方法的抽象类。另一方面,您可以创建一个声明相同方法的接口。在这种情况下,可以使用抽象类代替接口吗?


问题答案:

不总是:

  • 一堂课只能延伸 堂课
  • 一个类可以实现 多个 接口

Sun文档
进行了更详细的比较:

抽象类与接口

与接口不同,抽象类可以包含非静态和最终字段,并且可以包含已实现的方法。此类抽象类与接口相似,不同之处在于它们提供了部分实现,将其留给子类来完成实现。如果抽象类仅包含抽象方法声明,则应将其声明为接口。

可以通过类层次结构中任何位置的类来实现多个接口,无论它们是否以任何方式相互关联。例如,考虑可比或可克隆。

相比之下,抽象类通常被子类化以共享实现。单个抽象类由相似类的子类继承,这些相似类具有很多共同点(抽象类的实现部分),但也有一些区别(抽象方法)。



 类似资料:
  • 在OOP中,抽象是当我们只向用户提供有用的细节,并隐藏所有实现细节时。那么,如果我有一个接口,并且我在一个类中实现它,那么这是如何实现抽象的呢?我读了这篇关于“如何使用接口实现100%的抽象”的文章 如果这个问题听起来离题或者含糊不清,那么它真的是,我想知道的是oop中的抽象是如何与接口相关的。

  • 问题内容: 键入密码短语时 每个人都能听到敲击空格键的声音,因此在密码字段中显示空格也很合逻辑。所以我想要一些可以显示的东西 代替 这将使键入更加容易,同时几乎不降低安全性。 更新 更新Riduidel的评论之前请三思。当布鲁斯·施耐尔(Bruce Schneier)写 “是时候以明文形式显示大多数密码了”时 ,那么显示其中的一小部分也必须是正确的。尤其是显示仅通过聆听即可捕获的部分。 问题答案:

  • 我们有和抽象类: 我们有三个实现它的类、和: 正如您所看到的,有些属性是常见的,我想将它们提取到另一个类/接口中。因此,理论上我可以创建以下接口: 接口IA{int Id{get;set;}} 抽象类A:IA{public int Id{get;set;}} 和将扩展: C类:A,IWithCategories{公共列表类别{get;set;}} D类:A,{公开列表注释{获取;设置;}} 我知道

  • 据我所知,Java抽象类不能实例化。然而,(抽象类)具有以下方法: 获取文档中提供了有关JAXP和Properties的更多详细信息。有谁能对此作更清楚的解释吗?。

  • 我知道抽象类不能被实例化,但在这段代码中被混淆了。这个代码到底是什么意思?

  • 问题内容: 有人告诉我,这引起了我对此话题的好奇: Java gui类可以实现数百个侦听器和回调,并且许多书籍都教您在gui类中实现所有这些接口。另外,这些方面也可以在内部类中实现,因此,侦听器调用的方法不会混淆。 我想知道如何在ActionScript中做到这一点,ActionScript没有内部类,但是具有私有类。但是,我认为我还没有完全意识到内部类的含义,因此我只是想把我的头放在这种情况下,