Java抽象类与接口的区别

看到题目的时候,你掌握这个知识点了吗?


图片来源与网络

常见面试问题如下:

  • 接口和抽象类的区别,什么时候使用?
  • 抽象类和接口的相同点和不同点?

总之就是经常问到的问题了。官方文档有句很逗的话,说给面试官听,估计很有意思。

Java语言规范

所有的接口都是隐式的抽象声明。

Abstract class vs Interface

抽象类与接口都是用于功能的抽象。

  • 方法: 接口只能有抽象方法,抽象类可以有抽象方法和非抽象方法。Java8以后,接口可以直接定义default和static方法了。抽象类可以有protect和private方法。
  • 成员变量:接口中的成员变量默认是static和final的,抽象类可以像常规的对象一样定义各种成员变量。可以是非static和final的
  • 实现:接口不能实现其他的接口,只能继承一个其它的接口。抽象类可以实现多个接口。
  • 构造器:抽象类可以有构造器,接口不能有构造器。
  • main方法: 抽象类可以有main方法,并且我们可以运行它。接口不能有main方法。
  • 速度:抽象类速度更快一些,接口需要时间寻找类中的实现方法。

使用场景

Java8以后可以直接在接口中定义default方法和static方法,如此接口与抽象类之间的差异就小了一些。

抽象类使用场景

  • 当你需要定义非静态和和或final类型的成员变量时,想要修改类中某些成员的状态的时候。考虑使用抽象类。
  • 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。
  • 有时候一个类中全部都是静态方法,无需实例化的类可以考虑使用抽象类

接口使用场景

  • 所有的定义的方法必须要实现的时候,完全的抽象考虑使用接口
  • 一个类需要实现多于一个的接口。这个也叫做多继承

最后

解释一个常见的知识点

参考

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 抽象类 在继承的层次结构中,每个新子类都使类变得越来越明确具体。如果从一个子类追溯到父类,类就会变得更通用和抽象。...
    Steven1997阅读 1,624评论 0赞 5
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,421评论 18赞 399
  • 抽象类 抽象类是用来捕捉子类的通用特征的。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的...
    NoFacePeace阅读 258评论 0赞 0
  • 整理来自互联网 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具...
    Ncompass阅读 1,674评论 0赞 6
  • 好久没提笔了,哈哈,装下逼。跟二哥在一起这十个月记忆犹新,从开始的满满幸福,到后来的各种吵闹,小家子气。你总说我说...
    洁妹儿阅读 240评论 0赞 0

友情链接更多精彩内容