作为一个基础的Java高频面试题,是所有Java面试者必须烂熟于心的。当然不能死记硬背,可以通过实际地写几个小demo,边实际操作边理解,既能感受到编程的快乐,更重要的是真的理解记住了二者的区别。

此外,本篇文章是在Java1.8的基础上进行讲解的,网上一些文章,没有说明Java版本,上来直接讲一大堆知识,有的文章通篇讲的是Java1.7或者更早的版本,容易误导初学者,让初学者以为Java1.7的区别就是Java1.8的区别,其实,对于接口和抽象类的区别这个问题,1.8和1.7还是不一样的。并且现在无论实际开发还是面试,都是基于Java1.8的。(在文章中也会穿插说下Java1.7相关内容)

1、一个类只能继承一个抽象类,但可以实现多个接口

Java规定,一个类只能有一个父类。但是,对于这个父类而言,它可以有多个子类,也就是说,可以同时有多个类继承同一个父类。一个类可以同时实现多个接口。

特别注意的是,接口自己本身可以通过extends关键字扩展多个接口。(类只能单继承,但是接口可以多继承)  如图:

2、接口方法默认修饰符是 public,抽象方法可以有 public、protected 和 default 这些修饰符。

抽象方法就是为了被重写所以不能使用 private 关键字修饰。

接口方法默认修饰符是 public,jdk8中接口可以有默认方法(default修饰)和静态方法(static修饰)。

"接口方法默认修饰符是public"这句话,你可以在Intellij IDEA编辑器试一下,当你在方法前加上public时,编辑器会有提示"对于接口方法而言,public是多余的"

3、接口没有构造方法,抽象类有构造方法

接口中没有构造方法,因为接口是个集合,并不是类。(官方定义:接口在java中是一个抽象类型,是抽象方法的集合。一个类通过继承接口的方式,从而继承接口的抽象方法。)虽然接口内的方法都是抽象的(和抽象方法很像,没有实现,Java1.8中默认方法和静态方法可以有实现)但是不需要abstract关键字。

抽象类有构造方法,抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。

(!!!  PS:有人会问,既然抽象类不能实例化对象,那么抽象类的构造方法没有用处了?    非也!

在抽象类中可以有构造方法,只是不能直接创建抽象类的实例对象,但实例化子类的时候,就会初始化父类,不管父类是不是抽象类都会调用父类的构造方法,初始化一个类,先初始化父类。如下图:

!!! )

4、实现方法的区别

抽象类里面的抽象方法必须全部被子类实现,如果子类不能全部实现,那么子类必须也是抽象类。接口里面的方法也必须全部被子类实现,如果子类不能实现那么子类必须是抽象类。

当然,抽象类和接口的区别还有很多,就不再这里一一列举了,樱木会尽心尽力写好每一篇文章,如果喜欢的话,请关注微信公众号:樱木乐趣编程

java 关注公众号没有调接口_高频面试题:接口和抽象类的区别相关推荐

  1. java 关注公众号没有调接口_深入理解Java继承、封装、多态的实现原理

    点击关注上方"Java技术江湖",设为"置顶或星标",第一时间送达技术干货. 作者:黄小斜 文章来源:微信公众号[Java技术江湖] 目录 从JVM结构开始谈多 ...

  2. java 关注公众号回调_处理公众号回调消息

    一.背景 在上一节中,我们知道如何接入微信公众号,但是之后公众号会与我们进行交互,那么微信公众号如何通知到我们自己的服务器呢?我们知道我们接入的时候提供的url是 GET /mp/entry,那么公众 ...

  3. java 关注公众号_推荐10个值得关注的技术公众号

    原标题:推荐10个值得关注的技术公众号 今天推荐一些行业内优质的技术公众号,这些号的主人在技术圈深耕多年,关注这些技术号可以让系统了解学习他们分享的技术经验,让我们的技术提升事半功倍. 程序员内推圈 ...

  4. java微信公众号支付开发平台_微信公众号支付demo,微信公众号支付Java DEMO

    1.5.4微信验证的控制方法: /** * 微信验证 * 请填写接口配置信息,此信息需要你有自己的服务器资源,填写的URL需要正确响应微信发送的Token验证 * 验证服务器地址的有效性 * 开发者提 ...

  5. java微信公众号短信验证码_解决微信端公众号网页获取短信验证码ajax重复调用两次的问题...

    问题背景介绍: 微信公众号网页开发的时候,点击发送短信验证码,如果响应时间超长,目前测试是10秒左右(这个10秒左右,是我自己多次测试总结出来的规律) 超过10秒左右,就会自动请求第二遍,这个问题挺恶 ...

  6. java微信公众号多客服_微信公众号多客服功能怎么实现?

    原标题:微信公众号多客服功能怎么实现? 微信公众号多客服功能怎么实现?为了方便更好地接待公众号的用户,很多企业想要为公众号接入多客服,以此提升公众号服务.公众号多客服功能可以通过接入米多客公众号客服软 ...

  7. java微信公众号多客服_微信公众平台开发(92) 多客服(转)

    $object->Content); if($keyword == "时间" || $keyword == "测试"){ $content = date( ...

  8. 慕课网_《Java微信公众号开发进阶》学习总结

    时间:2017年08月12日星期六 说明:本文部分内容均来自慕课网.@慕课网:http://www.imooc.com 教学源码:http://img.mukewang.com/down/... 学习 ...

  9. 请求微信接口,判断用户是否关注公众号

    最近开发了一个投票活动,用户可上传一张照片,分享微信好友或朋友圈邀请好友点赞,点赞前几名可获得相应的奖品.上传照片的用户必须关注某公众号. 用户点击上传按钮,后台判断用户是否关注公众号,关注则前端可使 ...

最新文章

  1. 你的裸照,一键生成,令人害怕的不是算法,是人心!
  2. 如何高效的做机器学习项目
  3. 弃用MyBatis!我们最终选择了 JDBCTemplate!
  4. 三网合一是指计算机网,什么是三站合一网站?什么是三网合一网站?
  5. linux添加自己的键盘映射,Linux 键盘映射
  6. matlab keras,基于预训练的 Keras 层组合网络
  7. python接球游戏
  8. @Value属性配置 以及 spring boot1.5以上版本@ConfigurationProperties取消location注解后的替代方案...
  9. NSIS 安装VS2008运行时
  10. 计算机键盘英语单词怎么写,输入单词_如何用电脑键盘打出英文单词需要那种只要一个字母就可以自己弹出单词的那种_淘题吧...
  11. foobar2000播放器简单配置 [李园7舍_404]
  12. win10系统重装步骤详解
  13. 胡侃学习(理论)计算机-From 南大小百合
  14. 计算机图形学大会和学术刊物编辑
  15. BUU-CRYPTO1密码学小白 25道入门题 详细解题思路
  16. 数据获取以及处理Beta版本展示
  17. 【C语言】数据表现形式及基本数据类型
  18. PostgreSQL regress test
  19. Leetcode-前缀和
  20. ldf 和mdf 各是数据库的什么文件?

热门文章

  1. react-native页面间传递数据的几种方式
  2. [Electron]仿写一个课堂随机点名小项目
  3. 给你的博客换个装-园子换装指南
  4. CSS中的overflow属性
  5. sql中有一些保留字,当你的字段名是它的保留字时,这个时候sql语句的字段不加``就会报错...
  6. codeforces Labyrinth
  7. 解决问题SyntaxError: Unexpected token import
  8. Eclipse中classpath和deploy assembly的文件位置
  9. MVC3中的视图文件
  10. 小心pthread_cond_signal和SetEvent之间的差异