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

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

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

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

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

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

9bf7d7c378dc6e679592aebfbd3a17df.png

75b198eb9a18b021a261e983e4f0ed5b.png

fe11dfa077140c8bcad5443dafc417b5.png

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

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

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

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

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

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

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

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

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

97c5862bdf3e75de716d40d93a1728b1.png

b02602a6c7bd3d1d4ef659131d63d94c.png

ba49d0faf59678500ac1b8eab2fea50f.png

!!! )

4、实现方法的区别

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

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

a16f0e77136615763993e846b1eda953.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381471.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电池供电的电容麦_电容话筒受潮了怎么办?

听说许多人对电容话筒不了解,有人以为电容话筒可以直接插在电脑主板上用,有些人以为电容话筒可以插在卡拉ok的大两芯话筒口上用,有人以为电容话筒一定要独立的48V电源盒才能用等等。以上问题的答案全都是:不是。电容话筒最怕什么&…

c 调用openoffice word转pdf_批量 Word 转 PDF 方法

- START -手上有近百个 Word 文档需要转为 PDF, 怎么办?难道要一个一个的导出吗?确实,Office2010 以后版本的 Word 可以直接导出 PDF,是时候让 Python 来替我们干这个重复性的活了!直接上代码:from win32co…

hadoop put命令的格式_HDFS常用命令

一.HDFS命令行Hadoop help命令的使用1.hadoop -help查询所有Hadoop Shell支持的命令2.distcp这是Hadoop下的一个分布式复制程序,可以在不t同的HDFS集群间复制数据,也可以在本地文件间复制数据。hadoop distcp将/test/test.txt文件复制到/test/cp下面&…

python的opencv模块_OpenCV Python - 没有名为cv2的模块(再次)

我刚刚在Ubuntu 14.04上安装了OpenCV 3.0。它的工作原理。 根据官方教程,安装OpenCV。#!/bin/bashd #https://help.ubuntu.com/community/OpenCV version"$(wget -q -O - http://sourceforge.net/projects/opencvlibrary/files/opencv-unix | egrep -m1 -o \&q…

freemarker html 引入script_HTML编码规范

一、前言HTML作为描述网页结构的超文本标记语言,在百度一直有着广泛的应用。本文档的目标是使HTML代码风格保持一致,容易被理解和被维护。二、代码风格2.1. 缩进与换行​[强制] 使用 4个空格做为一个缩进层级,不允许使用 2个空格 或 tab字符。…

写入null_ArrayList并发写出现Null值

ArrayList并非线程安全的容器,这一点大家可能都非常清楚,但是在并发写入的情况下,不安全的情况具体有哪些,大家是否很清楚呢?本篇文章重点聊一下出现null的情况,然后对于其他并发写的安全做一个简单的叙述我…

c语言函数调用数组_第七讲:C语言基础之函数,第二节,实现汉诺塔

本文约2200字,主要讲了C语言基础之函数,递归,数组作为函数参数以及案例、练习题等。带你进入C语言的世界,入门C语言,后边将持续更新。可以收藏学习。想了解C语言基础之函数,函数的基本概述,函数…

仍然报错_only_full_group_by配置,竟让所有应用报错?

推荐学习周一福利到!献上“独家全新”MySQL进阶套餐,简直就是血赚 全网独家的“MySQL高级知识”集合,骨灰级收藏,手慢则无 1. 踩坑经历一个很平常的下午,大家都在埋头认真写bug呢,突然企业微信群里炸锅了&a…

根据录入的计算公式计算_污水处理工程设计入门(10)—堰口计算

呓语:虽然现在很多人会推送很多的快速计算表格,但是我并不想授人以鱼。我希望每一个想学习想入门做污水处理工程设计的人先看懂如何设计,再去想如何快速计算,再去想怎么改进。再者,想想有一天你当领导审图了&#xff0…

关于使用在webforms里使用routing遇到的问题

看了重典的两篇文章 System.Web.Routing入门及进阶 上篇 System.Web.Routing入门及进阶 下篇 仿照其中的进行了操作,发现怎么不都起作用,非常奇怪,搜了好多才找到了解决方案 是在MSDN上找到的,如下: To configure …

[导入]【翻译】WF从入门到精通(第十章):事件活动

摘要: 学习完本章,你将掌握:1.使用HandleExtenalEvent活动创建特定的事件处理程序2.在你的工作流中使用Delay活动3.在你的工作流中使用EventDriven活动4.在你的工作流中使用Listen活动5.理解EventHandlingScope活动在活动并发执行的情况下是怎样监听事件…

mysql查询返回xml格式_MySQL数据库查询操作XML的经验分享

mysql里面有内置的操作xml的函数。分别是ExtractValue()和UpdateXML()函数。语法:1EXTRACTVALUE (fiedname, XPathstring);第一个参数:fiedname是String格式,为表中的字段名第二个参数:XPathstring (Xpath格式的字符串) &#xff…

wordpress发布模块_如何用WordPress打造出一个类似知乎的问答站点

像打造一个像知乎这样的在线问答社区吗?问答网站非常有意思,而且用户活跃度也高,有很多非常有用的信息。在这篇文章中,我们将向你展示如何在没有任何编程经验的情况下利用WordPress快速打造一个问答类网站。你可以将整个网站做成问…

mysql 密码sha256_MySQL5.6启用sha256_password插件

一、背景:使用MySQL5.6过程中,发现默认的加密插件为mysql_native_password。而sha256_password的安全程度要比mysql_native_password高,尝试切换为sha256_password。二、配置过程:资料:1、从MySQL官网查询到服务器端sh…

ftp无法连接虚拟机_一步步编写操作系统4 安装x86虚拟机 bochs

本节内容摘自《操作系统真象还原》,请大家支持正版Bochs下载安装在完成了linux发行版的安装后,现在到了安装bochs的环节,这是我们的操作系统最终的宿主机。由于我的工作是运维,所以练就了任何软件包都要从源码安装的“陋习”&…

python语言用什么关键字来声明一个类_Python语言和标准库(第三章:类和对象)...

python如何将函数和数据整合在一起,并且通过一个对象的名称访问它们。 如何和为什么使用类与对象,以及他们如何使编程人员易于多种情形下编写和使用程序。 3.1考虑编程 现在要在python中创建一个对对象的描述,您已有足够的只是获得两个视图。…

mysql主从1594错误_3分钟解决MySQL主从1594错误

3分钟解决MySQL主从1594错误简介Part1:写在最前1594这个错误看起来挺严重的,会提示你binlog文件或者Relay log损坏了,例如binary log is corrupted、relay log is corrupted之类的看起来很吓人是吧,多数是由于掉电引发的,这也说明了机房配备U…

ci框架 mysql 超时时间_mysql 字符集和校验规则( CHARSET amp; COLLATE)

我们首先看下常见建表语句:mallAllGoodsCREATE TABLE qywl.mallAllGoods ( id varchar(64) NOT NULL COMMENT 主键id,userId varchar(64) NOT NULL DEFAULT COMMENT 发布人id,storeId varchar(64) NOT NULL DEFAULT COMMENT 发布商号id,data varchar(1000) NOT NU…

SQL 附加数据库时出现 无法打开物理文件错误

错误信息: 执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo) ------------------------------ 无法打开物理文件 "D:\SqlDataBase\Test.mdf"。操作系统错误 5:"5(拒绝访问。)"。 (Microsoft SQL Server,错误…

Flash网页游戏辅助工具制作简析

《热血三国》好像是比较热,玩的人也挺多的,年前一个朋友希望能让我写一个这个游戏的外挂,也出于无聊,所以去玩了一下,谁知道一玩就有点喜欢这个游戏了,当然玩归玩,东西还是要做地,当…