【JAVA】第十二节:抽象类与接口(详细介绍)

上一篇详细介绍了面向对象多态的知识,这篇来说说抽象类与接口。

目录

一、抽象类

[1.1 抽象类是什么?](#1.1 抽象类是什么?)

[1.2 抽象类的特点](#1.2 抽象类的特点)

[1.3 抽象类出现的意义](#1.3 抽象类出现的意义)

[1.4 匿名对象](#1.4 匿名对象)

二、接口

2.1接口是什么?

[2.2 接口的特点](#2.2 接口的特点)

[2.3 接口与接口的关系](#2.3 接口与接口的关系)

[2.4 接口出现的意义](#2.4 接口出现的意义)

[2.5 接口的实现案例](#2.5 接口的实现案例)

三、抽象类和接口的区别


一、抽象类

1.1 抽象类是什么?

抽象类名字抽象,理解起来不抽象,顾名思义,抽象类 也只是一个特殊点的类,特殊在哪呢,

抽象类 只能被继承使用 ,它本身就像一个模 板,里面的方法 都没有具体实现的内容 ,这些方法叫抽象方法, 在面向对象编程中常用于定义通用的行为规范 ,给子类 提供一个模板

1.2 抽象类的特点

1.抽象方法 必须包含在抽象类中 ,一个类内有抽象方法,那它一定是抽象类


2.抽象类 中的方法不需要实现


3.抽象类不能被实例化


4.抽象方法不能是 private 的


5.抽象方法不能有 final 和 static 修饰

6.抽象类的子类如果也抽象,子类可以不必去重写方法,直到子类不抽象,所有方法都实现


1.3 抽象类出现的意义

前面也说了抽象类就是一个给子类准备的模板,它的存在意义就是为了让子类去继承他,实现抽象类中的各种方法,可以说抽象类就是为了继承而生的。虽然普通类也都能做到,但是使用抽象类相当于多了一重编译器的校验。


1.4 匿名对象

匿名对象 是指没有被命名的对象 。通常直接创建使用 new + 类名 ,仅在一个地方使用,匿名对象的生命周期很短暂,一旦使用完成就被销毁,无法再被访问。

匿名对象适用于一些简单、临时的操作。



二、接口

2.1接口是什么?

生活中的插座口,usb插口,都是接口

在编程中接口 是一种定义了类或对象应该具备的行为、属性或方法的规范 ,接口就是一种行为的抽象,它定义了一组相关的方法,用来描述一个类的行为能力。通过实现接口,类可以表明它具备了某种特定的行为能力

简单来说一个接口就是一个功能,比如狗会跑,鸡会跑,那他们可以实现一个IRunning接口,用来表明它们都可以跑,同理 鱼会游泳,人会游泳,就实现ISwiming接口,人还会跑,就再实现IRunning接口,这就是接口。

2.2 接口的特点

1.接口的成员变量默认被public static final 修饰


2.接口中的方法默认都是 public abstract


3.如果抽象中的方法前加上 defualt/static 就可以对方法进行实现了


4.接口也不能实例化


5.类通过 implements 去实现接口


6. 抽象类实现接口后可以不从重写接口的方法,但是它的子类必须实现


7.接口中不能有静态代码块和构造方法


2.3 接口与接口的关系

接口与接口之间可以继承,一个接口可以继承多个接口


2.4 接口出现的意义

通过上面的介绍,我们认识到了接口,接口的意义 就是弥补 了java不能多继承 的缺点,通过不同的接口,表明自己这个类的特性与特定功能


2.5 接口的实现案例

接口可以做到类能做到大部分事情,包括多态,下面案例展示



三、抽象类和接口的区别

抽象类接口 都是 Java 中多态 的常见使用方式. 都需要重点掌握. 同时又要认清两者的区别

核心区别: 抽象类中 可以包含普通方法普通字段 , 这样的普通方法字段可以被子类直接使用 (不必重写), 而接口不能包含普通方法 , 子类必须重写所有的抽象方法


相关推荐
asdfg12589633 分钟前
小程序开发中的JS和Go的对比及用途
开发语言·javascript·golang
FL16238631298 分钟前
基于yolo11实现的车辆实时交通流量进出统计与速度测量系统python源码+演示视频
开发语言·python·音视频
华如锦18 分钟前
四:从零搭建一个RAG
java·开发语言·人工智能·python·机器学习·spring cloud·计算机视觉
Tony_yitao20 分钟前
22.华为OD机试真题:数组拼接(Java实现,100分通关)
java·算法·华为od·algorithm
JavaGuru_LiuYu21 分钟前
Spring Boot 整合 SSE(Server-Sent Events)
java·spring boot·后端·sse
爬山算法25 分钟前
Hibernate(26)什么是Hibernate的透明持久化?
java·后端·hibernate
彭于晏Yan27 分钟前
Springboot实现数据脱敏
java·spring boot·后端
做cv的小昊31 分钟前
【TJU】信息检索与分析课程笔记和练习(6)英文数据库检索—web of science
大数据·数据库·笔记·学习·全文检索
每天吃饭的羊31 分钟前
媒体查询
开发语言·前端·javascript
luming-0232 分钟前
java报错解决:sun.net.utils不存
java·经验分享·bug·.net·intellij-idea