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

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


相关推荐
SteveKenny6 分钟前
Python 梯度下降法(六):Nadam Optimize
开发语言·python
Hello.Reader1 小时前
深入浅出 Rust 的强大 match 表达式
开发语言·后端·rust
__雨夜星辰__3 小时前
Linux 学习笔记__Day2
linux·服务器·笔记·学习·centos 7
学问小小谢3 小时前
第26节课:内容安全策略(CSP)—构建安全网页的防御盾
运维·服务器·前端·网络·学习·安全
xrgs_shz3 小时前
MATLAB的数据类型和各类数据类型转化示例
开发语言·数据结构·matlab
customer085 小时前
【开源免费】基于SpringBoot+Vue.JS体育馆管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
Miketutu5 小时前
Spring MVC消息转换器
java·spring
乔冠宇5 小时前
Java手写简单Merkle树
java·区块链·merkle树
charlie1145141916 小时前
从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(协议层封装)
c语言·驱动开发·单片机·学习·教程·oled