【JavaSE】抽象类与接口

本文介绍了Java中的抽象类和接口,包括它们的概念、语法和特性。抽象类不能实例化,但可以包含抽象和非抽象方法,而接口则是一个包含抽象方法的规范,不能实例化,但可以被类实现。一个类可以继承一个抽象类并实现多个接口,接口之间可以多继承。接口提供了一种方式,让不相关的类共享行为,而抽象类更关注类的层次结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

抽象类的概念

什么是抽象类呢?我们先来看一个例子:一个父类是动物类,两个子类一个狗狗类,一个猫猫类。
在这里插入图片描述
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这个接口,这就是接口的好处。

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悲伤猪小猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值