抽象类、接口的区别和相似点

在这里插入图片描述

  各位小伙伴们大家好,欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏,在这个系列专栏中我将记录浅学这本书所得收获,鉴于 看到就是学到、学到就是赚到 精神,这波简直就是血赚

💡涉及的知识点速通

  • 🛫 abstract抽象
    • 🪂 抽象类
    • 🪂 抽象方法
  • 🛫 interface接口
    • 🪂 接口的结构
    • 🪂 接口的实现和方法引用
    • 🪂 为什么使用接口

🛫 abstract抽象

🪂 抽象类

  一旦一个类使用abstract修饰之后就代表他是一个抽象类,抽象类的显著特征就是:抽象类无法实例化。有的小伙伴可能就会问了,既然抽象类已经无法实例化对象了,那么它是不是已经没有构造器了?不,抽象类依然有构造器,构造器的作用就是供子类继承的时候进行调用。在这里插入图片描述

🪂 抽象方法

  方法声明: 使用abstract修饰的方法只能有方法的声明不能有方法体和大括号在这里插入图片描述
  抽象的类与方法之间的关系: 包含抽象方法的类一定是一个抽象类,但是抽象类中不一定包含抽象方法。而且继承了抽象类的子类必须重写该类中所有的抽象方法(如果超类的超类中也有抽象方法,此时子类也必须重写超类的超类的抽象方法),否则子类也要使用abstract修饰成抽象类,这样的话子类也就无法实例化在这里插入图片描述  abstract关键字不能使用的地方: 关键字只能用来修饰类和方法,无法修饰属性、构造器、代码块等结构。方法的声明中:abstract关键字无法与private修饰符、static关键字、final关键字一起使用,因为私有、静态、final方法无法被子类重写,但是抽象方法必须被子类重写,产生冲突。类的声明中:abstract关键字无法与final关键字一同使用,final类无法被继承那么它内部的抽象方法也就无法被重写,发生冲突在这里插入图片描述

🛫 interface接口

  接口的存在类似于抽象类,将一些类的共同行为特征作为抽象方法抽取出来,但是他又和抽象类有着本质的不同,接口根本就不是一个类。接下来我们就使用抽象类来类比学习接口的特性
  接口源文件: 接口虽然不是一个类,但是接口在很多方面和类十分相似,比如接口的源文件:接口的源文件也是一个.java文件,可以通过javac命令进行编译生成.class字节码文件。一个.java源文件中只能有一个使用public修饰的类或者接口,这个源文件是以public修饰的接口或者类命名的在这里插入图片描述

🪂 接口的结构

  JDK 7以及之前,接口中只能定义公共静态常量和公共抽象方法,JDK 8之后接口中还可以定义公共静态方法和公共默认方法,所以说接口中的公共静态常量在声明的时候可以省略public static final,接口中的方法声明可以省略public

  静态、默认方法: 接口中的静态方法无法通过接口实现类的对象调用,只能使用接口直接调用,但是接口中的默认方法可以通过接口实现类的对象调用,而且抽象超类中的静态方法也可以使用子类对象调用。子类无法重写覆盖超类或者接口中的静态方法,但是可以重写覆盖接口中的默认方法在这里插入图片描述  接口构造器: 接口中绝对不能出现构造器,这也就意味着接口无法实例化创建对象,虽然抽象类也无法实例化创建对象,但是抽象类中有构造器(供子类调用)在这里插入图片描述

🪂 接口的实现和方法引用

  接口的实现: 接口无法实现接口但是可以继承接口或者类,类使用implements关键字实现接口,一个类可以实现多个接口使用逗号隔开。接口中定义了抽象方法,实现接口的类必须重写这个接口中的所有抽象方法(包括通过extends继承来的抽象方法),否则这个类就必须定义成抽象类在这里插入图片描述就近引用、类优先、接口冲突原则:
   如果一个类的超类和超类的超类中定义了一个同名变量或者方法的话,由于就近原则这个类中引用的就是超类的变量或者方法,如果子类中也有的话就近调用子类的在这里插入图片描述  类和接口是一个同一级的概念,如果一个类的超类和它实现的接口中定义一个同名变量,这就会导致这个类中变量的引用不明确而报错,但是如果是方法的话就默认类优先原则调用超类中的方法在这里插入图片描述  还有一种就是一个类实现多个接口中有同名变量或方法,由于接口冲突此时引用这个变量或者方法就会报错,需要重写该方法或者重定义该变量在这里插入图片描述

  总结来说同名情况下,多重继承变量方法都就近一接口一超类变量报错、方法类优先多实现接口冲突

🪂 为什么使用接口

   可能有的小伙伴要问了,既然抽象类跟接口都可以定义抽象方法,它们的子类或者实现类也都必须实现这个抽象方法,那么为什么不直接使用抽象类,而是大费周折的再引入接口的概念呢?抽象类毕竟是个类,类的话就只能继承一个抽象超类,但是一个类可以实现无数多个接口,也就是说接口弥补了Java语言只能单继承的局限性。
  接口的使用很广泛,比如想要实现序列化就要实现Serializable 接口,想要自定义对象的排序规则就要实现Comparable接口,重写CompareTo方法……

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

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

相关文章

c标签判断true false jsp_Java学习知识点:小白如何掌握JSP技术?

今天千锋广州小编就给大家分享零基础如何掌握JSP技术,下面一起来看看吧!一、Java初级开发之jsp概述1.关于jspJavaServer Pages简称jsp,从“server”这个词可以看出,这其实也是一门java服务端技术,其实可以简单的把jsp认为是servle…

python语言保留字的特点_python保留字及其说明

原博文 2019-07-14 22:05 − 保留字 说 明 and 用于表达式运算,逻辑与操作 as 用于类型转换 assert 断言,用于判断变量或条件表达式的值是否为真 break 中断循环语句的执行 class 用于定义类 continue 继续执行下一次循环 ...011647 相关推荐 2019-12-19…

使用Java操作Redis的两种方式Jedis、RedisTemplate

各位小伙伴们大家好,欢迎来到这个小扎扎的Redis 6专栏,在这个系列专栏中我对B站黑马的Redis教程进行一个总结,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛ 💡Redis知识点速览&#…

python提取数据库数据_Python如何读取MySQL数据库表数据

本文实例为大家分享了Python读取MySQL数据库表数据的具体代码,供大家参考,具体内容如下 环境:Python 3.6 ,Window 64bit 目的:从MySQL数据库读取目标表数据,并处理 代码: # -*- coding: utf-8 -*- import p…

【项目实战】基于Redis实现短信验证码登录 (附源码、思路)

各位小伙伴们大家好,欢迎来到这个小扎扎的Redis 6专栏,在这个系列专栏中我对B站黑马的Redis教程进行一个总结,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛ 💡Redis知识点速览&#…

加工中心刻字宏程序_FANUC OI系列图书——车床、铣床及加工中心编程

☞ 这是金属加工(mw1950pub)发布的第10035篇文章导读今天跟大家分享FANUC OI系列图书,包括车床、铣床及加工中心编程,快来看看吧!《FANUC 0i数控车床/加工中心编程技巧与实例》选择在企业里应用*广泛、编程*具代表性的日本FANUCSeries0i-TC/T…

Redis 的缓存策略

各位小伙伴们大家好,欢迎来到这个小扎扎的Redis 6专栏,在这个系列专栏中我对B站黑马的Redis教程进行一个总结,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛ 💡Redis知识点速览&#…

关闭后天 树莓派_陪你一起玩树莓派-系统安装

从今天就开始我们的树莓派之旅,心情是不是有点小激动?我们拿到一个树莓派是一个裸机。我们要准备一张16G的高速TF闪存卡,一个5V/2A的USB电源和一根micro B的 usb线。装机步骤:一、下载树莓派系统1、浏览器打开树莓派官方网站 http…

简单的签到代码_PHP实现一个小小的签到功能,到底用MySQL还是Redis?

来源 | http://suo.im/5EWN3k今天,看下签到功能怎么选择?现在的网站和app开发中,签到是一个很常见的功能,如微博签到送积分,签到排行榜~微博签到如移动app ,签到送流量等活动,移动app签到用户签…

【Redis 6】缓存穿透、缓存雪崩、缓存击穿(附解决方案、代码)

各位小伙伴们大家好,欢迎来到这个小扎扎的Redis 6专栏,在这个系列专栏中我对B站黑马的Redis教程进行一个总结,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛ 💡Redis知识点速览&#…

8软件遇到的问题及解决方法_Excel工作表中的8个常见问题,你一定遇到过,附解决方法...

在Excel工作表中,最常用的还是一些技巧,如果能够熟练掌握,对于工作效率的提高绝对不是一点点哦,结合工作实际,小编对工作中常见的问题进行了总结,一共有8类,你一定也遇到过……一、Excel工作表常…

unity着色器和屏幕特效开发秘笈_Oculus研发分享:开发移动VR内容时应避免的PC渲染技术...

查看引用/信息源请点击:映维网开发移动VR内容时应避免的PC渲染技术(映维网 2019年11月25日)有不少开发者都是以与PC相同的方式来开发Quest游戏,但这可能会导致优化性能方面出现大量困难。Oculus软件工程师特雷弗达什(T…

Java包装类、java中的方法传参机制:按值调用

各位小伙伴们大家好,欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏,在这个系列专栏中我将记录浅学这本书所得收获,鉴于 看到就是学到、学到就是赚到 精神,这波简直就是血赚 💡涉及的知识点速通🛫 方法…

尤克里里怎么样_尤克里里和吉他区别?尤克里里与吉他相比有什么不可替代的优势...

尤克里里和吉他有什么区别?想必大家都见过尤克里里吧,就是类似吉他形状的一种小型弦拨乐器。我们可以简单的认为:尤克里里是简化版本的吉他,更加简单,更加便宜。小编弹的就是尤克里里2.从外观上:吉他很大&a…

饿汉懒汉单例设计模式的使用及区别、java中的import关键字

各位小伙伴们大家好,欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏,在这个系列专栏中我将记录浅学这本书所得收获,鉴于 看到就是学到、学到就是赚到 精神,这波简直就是血赚 💡涉及的知识点速通🛫 关于…

广电运通不好进吗_我可以说郑州新风的安装大部分都是垃圾吗?

说郑州的新风安装都是垃圾,这话很无礼,很自大,很傲慢,但是我能说确实是这样嘛?其实包括我以前安装的也不合格——虽然我不是故意的。这几年见过许多家同行安装的新风,可以说目前见到的很多家都不合格&#…

Java迭代器和Collection接口

各位小伙伴们大家好,欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏,在这个系列专栏中我将记录浅学这本书所得收获,鉴于 看到就是学到、学到就是赚到 精神,这波简直就是血赚 💡涉及的知识点速通🛫 关于…

私钥经过哈希计算可以产生公钥_「区块链基础概念100」:公钥和私钥 | 027

免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。小编:记得关注哦投资区块链,猛戳:火星财经App下载来源:学习区块链原文标题:「…

关于List集合类ArrayList、LinkedList、Vector详解

各位小伙伴们大家好,欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏,在这个系列专栏中我将记录浅学这本书所得收获,鉴于 看到就是学到、学到就是赚到 精神,这波简直就是血赚 💡涉及的知识点速通🛫 关于…

关于Set集合类你都知道什么?来自《卷Ⅰ》的灵魂提问

各位小伙伴们大家好,欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏,在这个系列专栏中我将记录浅学这本书所得收获,鉴于 看到就是学到、学到就是赚到 精神,这波简直就是血赚 💡涉及的知识点速通🛫 关于…