【JavaSE】抽象类与接口

news2025/7/8 4:03:51

文章目录

  • 抽象类的概念
  • 抽象类的语法
  • 抽象类的特性
  • 接口的概念
  • 接口的语法
  • 接口的特性
  • 多接口的实现
  • 接口的继承

抽象类的概念

什么是抽象类呢?我们先来看一个例子:一个父类是动物类,两个子类一个狗狗类,一个猫猫类。
在这里插入图片描述
Animal中有一个dark()方法,因为每个动物的叫的声音不同,而Animal不是一个具体的动物,所以这个方法并不能实现,这时我们就可以把这个dark()方法设计为抽象方法abstract method ,而含有抽象方法的类我们称为抽象类abstract class

抽象类的语法

使用abstract修饰的类我们称为抽象类,使用abstract修饰的是抽象方法。
在这里插入图片描述

抽象类的特性

1、抽象类不能实例化

在这里插入图片描述
抽象类是抽象的所以不能被实例化。

2、抽象类中既可以有抽象方法,又可以有非抽象方法

在这里插入图片描述

3、当一个普通类继承了抽象类,那么必须重写抽象类中的抽象方法。

在这里插入图片描述
当我们重写后,报错消失
在这里插入图片描述

4、抽象类中的抽象方法不能使用,private final static,因为抽象方法一定要被重写,所以要满足重写的条件。

在这里插入图片描述

5、当一个子类没有重写父类的抽象方法时,可以把当前子类变为抽象类。

6、抽象类中不一定有抽象方法,但又抽象方法的一定是抽象类。

在这里插入图片描述

7、抽象类中可以有构造方法,供子类创建对象时,初始化父类成员变量

在这里插入图片描述

接口的概念

在日常生活中我们都见过接口,例如插座,例如usb接口,只要符合该接口的类型我们就可以使用该接口。在Java中也是,我们把接口可以看作对方法的抽象,只要类满足使用这个方法的条件,就可以实现接口,可以把接口看作多个类的公共规范,是一种引用数据类型

接口的语法

接口的定义形式跟类一样,只需要把class关键字换成interface关键字就可以了。
在这里插入图片描述
在这里插入图片描述

接口的特性

1、接口虽然时引用变量但不能被实例化

在这里插入图片描述

2、接口中成员默认为public static final方法默认为public abstract

3、接口中的方法不能在接口中实现,必须在实现该接口的类里面重写后实现。但是JDK8开始,可以写一个default修饰的方法

4、接口中不能有构造方法和代码块

在这里插入图片描述

5、接口被类实现时使用implements实现。

在这里插入图片描述

6、接口中可以有static修饰的方法

多接口的实现

我们先来看一个例子:
在这里插入图片描述
想要实现这个需求狗狗类和鱼类都很简单
在这里插入图片描述
但是鸭鸭类我们需要实现三个接口怎么办呢?这就是很典型的用法,一个类继承一个类实现多个接口
在这里插入图片描述
这就是Java中的不支持多继承,但是一个类可以实现多个接口

接口的继承

我们发现实现多个接口的时候很麻烦,需要把每个接口都实现一下,有没有简单的方法呢?我们说类和类之间是不支持多继承的,但是接口和接口之间可以多继承
在这里插入图片描述
在这里插入图片描述
为什么要设计接口呢?这些方法我们也可以写在抽象类里面,通过继承实现,为什么还要有接口?其实接口的作用是让我们不关注类的概念,关注的是类是否具有某种能力
在这里插入图片描述
机器人不属于动物类但是依然可以实现IRunning这个接口,这就是接口的好处。

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

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

相关文章

有趣的statement stack

引子 在使用events_statements_current的过程中发现,同一线程在同一时刻,可能有多条记录,与直观感觉不太一样,于是跟踪了一下内部实现,有了本文。 STATEMENT STACK的定义 STATEMENT STACK 是events_statements_curr…

Linux基础内容(11)—— 进程理解

目录 1.进程状态 1.只针对操作系统的宏观概念 2.Linux的进程状态 1.运行状态(R) 2.休眠状态(S) 3.暂停状态/浅度睡眠状态(T) 4.深度睡眠状态(D) 5.当前进程正在被追踪(t) 6.死亡状态(X) 7.僵尸状态(Z) 8.孤儿进程 2.进程的优先级 1.优先级定义 2.Linux的优先级表现…

matlab 小数据法求liyapunov指数

1、内容简介 略 625-可以交流、咨询、答疑 2、内容说明 摘 要:从 Lyapunov 指数的定义出发:在常用计算最大 Lyapunov 指数的基础上,将自相关法和 G-P 法应用于小数 据量法中,得到了一种计算最大 Lyapunov 指数的改进小数据量法…

推特的算法规则你知道多少?

如果玩Twitter却不明白Twitter算法是如何运作的,就如同贸然出征却忘了带上武器。 社交媒体的算法正在成为你在平台中所见内容的核心,当知晓了该平台的推荐算法,自然也就知道发布什么样的内容有助于被更多用户看到。因此,了解了算…

Spring之依赖注入

文章目录前言一、set注入1.1 UserDao类:1.2 UserService类:1.3 spring.xml配置文件:1.4 测试类:1.5 执行结果:二、构造方法注入2.1 UserDao2.2 UserService类:1.3 spring.xml配置文件:2.4 测试类…

微服务改造过程中那些必须重视的问题

“微服务”近几年尤其火热,各大厂都在进行微服务化改造和微服务建设,想享受微服务化带来的好处以便对自己的系统进行改造。分布式实验室特约记者李鹏采访了广州轻阅科技系统架构师陈珙,就微服务与SOA的区别与联系、企业引入微服务会带来的问题…

Vue2:官方路由 Vue-Router 3.x

前端路由 前端路由:根据不同的url地址,页面上展示不同的内容(根据url地址的不同分发到不同的组件。) SPA 介绍 spa 是 single page application 简写,意思是单页面应用程序。Vue 适合开发 spa 类型的项目。 优点&…

Django 所带的用户auth_user的坑点,authenticate()校验一直为None,校验与创建所遇到的问题整理与解决

整理一下django中用户模块自定义model后登录的一些问题: 网上的报错解决不是万能方案,主要还是要自主分析原因,有的是有用但是导包之类的也要看清楚因为自己修改了所以有所变得,不自定义的话又不太好用。 在项目初期决定使用auth…

鸡卵白蛋白偶联脂多糖(OVA-LPS),麻黄多糖修饰卵白蛋白(PB-OVA)

产品名称:鸡卵白蛋白偶联脂多糖 英文名称:OVA-LPS 用途:科研 状态:固体/粉末/溶液 产品规格:1g/5g/10g 保存:冷藏 储藏条件:-20℃ 储存时间:1年 脂多糖(Lipopolysacchar…

第四站:数组

目录 一、一维数组的创建和初始化 1.数组的创建 (1)基本定义,创建方式 (2)经典的错误标准的零分 2.数组的初始化 3.一维数组的使用 4.一维数组在内存中的存储 二、二维数组的创建和初始化 1.二维数组的创建 2…

SpringBoot SpringBoot 开发实用篇 2 配置高级 2.2 松散绑定

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇2 配置高级2.2 松散绑定2.2.1 问题引入2.2.2 松散绑定2.2.3 小结2 配…

MySQL学习笔记:模型2

序言 《MySQL45讲》 为什么表数据删除一半,表文件大小不变? 表数据既可以存在共享表空间里,也可以是单独的文件。这个行为是由参数 innodb_file_per_table 控制的: 这个参数设置为 OFF 表示的是,表的数据放在系统共…

错字修改 | 布署1个中文文文本拼蟹纠错模型

内容一览:中文文本错误的种类之一为拼写错误,本篇文章为利用 BART 预训练方法实现中文文本纠错功能的模型部署教程。 关键词:BART 中文拼写纠错 NLP 本文首发自微信公众号:HyperAI超神经 中文文本错误3大障碍:拼写、语…

Chapter9.1:线性系统的状态空间分析与综合(上)

此系列属于胡寿松《自动控制原理题海与考研指导》(第三版)习题精选,仅包含部分经典习题,需要完整版习题答案请自行查找,本系列属于知识点巩固部分,搭配如下几个系列进行学习,可用于期末考试和考研复习。 自动控制原理(…

第六节.常用Linux命令—chmod修改目录权限,组管理,用户管理

第六节.常用Linux命令—chmod修改目录权限,组管理,用户管理 1. chmod:可以修改用户/文件/目录的权限 1).命令格式: chmod(代表增加权限)/-(代表减少权限) r(可读权限)w(可写权限)x(可执行权限) 文件名/目录名 2.组管理: 1).终端…

年产5000吨饼干食品加工厂的工艺设计

目 录 摘 要 I Abstract II 第1章 绪论 1 1.1概述 1 1.2饼干的特点 1 1.2.1适宜大规模生产 1 1.2.2容易消化吸收 1 1.2.3食用方便 1 1.2.4营养价值高 2 1.3设计依据 2 1.4 设计范围 2 1.4.1 一般部分 2 1.4.2 重点部分 2 1.4.3 图纸 3 1.5设计指导思想 3 1.5.1 指导思想 3 1.5.…

org.activiti.validation.validator

org.activiti.validation.validator目录概述需求:设计思路实现思路分析1.ActivitiEventListenerValidator3.AssociationValidator4.validateAtLeastOneExecutable5.DataObjectValidator拓展实现参考资料和推荐阅读Survive by day and develop by night. talk for im…

【信号和槽】

前言 信号和槽是QT界面框架的一个核心特性,其重要性和MFC的消息映射机制一样。只要用QT开发项目,就一定会用到,所以必须100%熟练掌握,烂熟于心。 0x0 需要理解的概念 信号:特定情况下被发射的事件。鼠标单击按钮&…

基于复合粒子群优化的模糊神经预测控制的研究(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

boot+mp搭建版本踩坑记录

最近项目搭建中遇到的一些问题,涉及到 mp 版本 swagger集成等 文章目录前言一、引入mp启动报错1 相关配置2 报错 如下3 解决方案二、引入swagger1 引入的pom2 报错如下:3 解决方案三. 项目启动自动打开swagger页面总结前言 由于使用高版本springboot 导致集成遇到的一些问题 一…