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

注册用户:

在Java中,您可以创建一个仅包含抽象方法的抽象类。另一方面,您可以创建一个声明相同方法的接口。既然如此,您可以使用抽象类而不是接口吗?

博zh:

不总是:

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

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

抽象类与接口

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

您可以用AspectJ代替抽象类吗

可以限制抽象类的子类吗?

我们可以用具有扩展方法的接口替换抽象类吗?

我可以强制C ++类是非抽象类吗?

抽象类可以有构造函数吗?

我们可以从抽象类中实现吗?

可以将抽象类用作引用类型吗?

泛型类型可以实现多个抽象类吗?

抽象类可以有数组吗?

我们可以用C#中的带有默认方法的接口替换抽象类吗

Java接口是抽象类吗?

我的服务可以扩展抽象类吗?我的抽象类应该是@Injectable吗?

匿名类可以实现抽象类的非抽象方法吗?

与抽象类的接口

何时使用接口代替抽象类,反之亦然?

我们可以在php中创建没有抽象方法的抽象类吗?

F#抽象类类型成员表达式可以被“抽象覆盖”吗?

定义抽象类时,是否可以强制子类定义父接口中定义的属性/方法?

如果可以使用接口和特征,PHP为什么会有抽象类?

当你可以只做一个接口时,抽象类有什么意义

抽象类,类,接口

我可以在抽象类中更改变量的类吗

我可以使抽象类成为Java中普通类的子类吗

为什么可以在抽象类中实现接口,而不能在其他接口中实现?

我们可以实例化一个抽象类吗?

子类初始化后,抽象类可以工作吗?

可以在 kotlin 的对象表达式中扩展抽象类吗?

我们可以在Java中创建公共静态抽象类吗?

我们可以直接实例化一个抽象类吗?