【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 中多态 的常见使用方式. 都需要重点掌握. 同时又要认清两者的区别

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


相关推荐
学习编程的Kitty9 分钟前
JavaEE初阶——多线程(5)单例模式和阻塞队列
java·开发语言·单例模式
m0_372257029 分钟前
项目下有多个模块,每个模块有pom文件,是怎么继承的
java·tomcat
oak隔壁找我29 分钟前
Spring AI 入门教程,使用Ollama本地模型集成,实现对话记忆功能。
java·人工智能·后端
懒羊羊不懒@29 分钟前
JavaSe—Stream流☆
java·开发语言·数据结构
郝开30 分钟前
最终 2.x 系列版本)2 - 框架搭建:pom配置;多环境配置文件配置;多环境数据源配置;测试 / 生产多环境数据源配置
java·spring boot·后端
Bathwind-w32 分钟前
空间矢量脉宽调制(Space Vector Pulse Width Modulation)SVPWM基础
学习
小苏兮32 分钟前
【把Linux“聊”明白】自动化构建-make/Makefile详解
linux·服务器·学习·自动化·1024程序员节
XH1.38 分钟前
学习RT-thread(项目一:基于RT-thread的multi_button控制灯闪烁)
stm32·单片机·学习
Js_cold44 分钟前
(* clock_buffer_type=“NONE“ *)
开发语言·fpga开发·verilog·vivado·buffer·clock
yun68539921 小时前
读书之《架构师的自我修炼》_个人笔记
笔记