当前位置: 首页 > news >正文

day14_oop_抽象_接口

今日内容

上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili
同步笔记沐沐霸的博客_CSDN博客-Java2301
零、 复习昨日
一、作业
二、抽象
三、接口

零、 复习昨日

多态的好处:

  1. 扩展性强.加入新的功能,不需要改动代码
  2. 降低代码耦合度(解耦合或者松耦合)

一、抽象类

1.1 抽象类语法

正常类内有成员,成员属性和成员方法

生活中的抽象: 就是看不懂,不理解…

程序中的抽象类: 跟之前正常类不太一样,有点看不懂…


抽象类的语法

  1. 抽象类还是类
  2. 抽象类具体是方法变抽象了,是方法没有方法体
  3. 没有方法体要使用abstract修饰
  4. 抽象方法必须放在抽象类中
  5. 抽象类是使用abstract修饰的类
  6. 抽象类中可以有正常方法
  7. 抽象类中可以有构造方法的,但是不能创建对象

抽象类方法很抽象只有方法签名,没有方法体,没有方法执行! 有构造方法又不能创建对象!!! 那么抽象类存在的意义是什么??

主要用处就是用来当父类的!! 即用来被继承

  1. 子类可以继承抽象类
  2. 继承后必须实现(implement)父类全部抽象方法否则自己类也要定义成抽象类

1.2 抽象类应用

抽象类主要应用场景,就是多态! 将之前的父类变成抽象父类即可,其他用法不变!!

练习1: 改造形状类题目. 形状父类改造成抽象类,其他正常,求各个类的周长和面积

练习2: 改造灯泡类题目. 灯泡类改造成抽象类,其他正常,台灯类实现开各种灯

1.3 总结

为什么需要这么设计成抽象?

抽象类是用来抽象差异性、具体共同点的。也就是将差异性方法抽象化,提供给子类使 用。共同的方法具体化,所有子类继承。


把子类不一样的方法抽象成抽象方法,每个子类都重写
把子类都一样的方法提取到父类,每个子类直接用,不用重写

二、接口

2.1 接口语法

接口比抽象类更抽象的一种java文件,不是类.

接口的语法特点:

  1. 接口中属性是常量,没有变量,默认被 public static final修饰
  2. 接口中的方法默认被public abstract修饰,即每个方法都是抽象方法
  3. 接口中不能有构造方法,不能创建对象

  1. 子类实现接口,要求重写全部抽象方法否则子类定义抽象类
  2. 类可以实现多个接口
  3. 类可以同时继承加实现 (先继承再

接口是可以继承接口,且支持多继承

public interface USB {/*** 接口中属性是常量,没有变量* 默认被 public static final修饰*/public static final int length = 1;/*** 接口中的方法默认被public abstract修饰* 即每个方法都是抽象方法*/public abstract void chuanshu();/*** 接口中不能有构造方法* 不能创建对象*/
}
/*** --- 天道酬勤 ---** @author QiuShiju* @desc 键盘 实现 接口* 1 子类实现接口,要求重写全部抽象方法否则子类定义抽象类* 2 类可以实现多个接口* 3 类可以同时继承加实现 (先继承再实现)*/
public class Keyboard extends Suliao implements USB , Electron{@Overridepublic void chuanshu() {System.out.println("键盘传输数据" );}@Overridepublic void tongdian() {System.out.println("通电" );}
}

2.2 接口应用

接口也可以当做父引用指向子类对象,在多态的场景中使用.

        // 接口当做父引用指向子实现类对象USB usb = new Keyboard();USB usb2 = new Mouse();usb2.chuanshu();

改造台灯类为台灯接口

// 灯泡接口
public interface Bulb {void light();
}
// 红灯泡实现接口
public class RedBulb implements Bulb{@Overridepublic void light() {System.out.println("发红光" );}
}
// 台灯
public class TableLamp {public void open(Bulb bulb) {bulb.light();}public static void main(String[] args) {// 买台灯TableLamp tableLamp = new TableLamp( );// 买灯泡RedBulb redBulb = new RedBulb( );// 开灯tableLamp.open(redBulb); // Bulb bulb = new RedBulb( );tableLamp.open(new YellowBulb());}
}

2.3 总结

接口微观概念:接⼝是⼀种能力和约定
接⼝的定义:代表了某种能⼒。
⽅法的定义:能⼒的具体要求。

接口

public interface Flyable {void fly();
}
public class People implements Flyable{@Overridepublic void fly() {System.out.println("人飞,从楼上跳下飞..." );}
}
------------------------------------------------------public static void main(String[] args) {show(new Keyboard());show(new People());}public static void show(Flyable flyable) {flyable.fly();}

宏观概念:接⼝是⼀种标准、规范。

image-20230216142638774

其实,用的时候就是跟多态场景一样,
1)将方法的参数列表定义成接口类型,调用方法时传入子实现类
2)定义接口类型数组,向数组存储接口的实现类对象

扩展阅读
接口即是设计:在设计层面,接口可以避免我们陷入对细节的过多思考,
可以让我们站在一个更高的视角对系统做更好的评估,比如系统的交互
设计是否合理,功能是否缺失,是否具备可行性,是否过于复杂等等。public boolean login(String username,String password)
接口即是约定:在编码层面,接口可以明确的告诉开发人员如何使用
(接口的语义,需要什么作为输入,会有什么输出),而开发人员只
需要根据这些约定去实现具体的功能代码即可。前后端开发时会有一个接口文档

相关文章:

day14_oop_抽象_接口

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、抽象 三、接口 零、 复习昨日 多态的好处: 扩展性强.加入新的功能,不需要改动代码降低代码耦合度(解耦合或者松耦合) 一、抽象类 1.1 抽象类…...

模式识别 | MATLAB实现DNN深度神经网络模式分类识别

分类预测 | MATLAB实现DNN全连接神经网络多特征分类预测 目录 分类预测 | MATLAB实现DNN全连接神经网络多特征分类预测基本介绍任务描述程序设计参考资料基本介绍 DNN的结构不固定,一般神经网络包括输入层、隐藏层和输出层,一个DNN结构只有一个输入层,一个输出层,输入层和输…...

【C++】类和对象三大特性--继承

文章目录1.继承的概念及定义1.1继承的概念1.2 继承定义1.2.1定义格式1.2.2继承关系和访问限定符1.2.3继承基类成员访问方式的变化2.基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数5.继承与友元6. 继承与静态成员7.复杂的菱形继承及菱形虚拟继承虚拟继承解决数…...

MySQL的存储引擎

目录 一.概念 二.分类 操作 修改默认存储引擎 一.概念 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。现在许多不…...

工程项目管理系统源码-简洁+好用+全面-工程项目管理系统

​ ​工程项目管理系统是指从事工程项目管理的企业(以下简称工程项目管理企业)受业主委托,按照合同约定,代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 ​系统定义 工程项目管理企业不直接与该工程项目的总承…...

什么是STAR原则?

文章目录📋前言🔥省流版🎯什么是STAR原则🎯进行过程📋前言 对于大部分还在学习阶段的学生们来说,可能并不了解这个原则的含义,这里的star并不是指英文单词星星。这个原则我也是前段时间才认识到…...

前置知识-初值问题、显式隐式龙格库塔方法、Butcher阵列

1.1.4 龙格一库塔法 将向前欧拉法写成式 (1-37) 的形式, 可以看出它实际上利用了 f ( x , u ) f(x, u) f(x,u) 在 x n...

PythonWeb Django PostgreSQL创建Web项目(二)

安装数据库PostgreSQL并创建数据库 我第一次尝试使用PostgreSQL数据库,why?我喜欢它提供的丰富的数据类型,例如货币类型、枚举类型、几何类型(点、直线、线段、矩形等等)、网络地址类型、文本搜索类型、XML类型JSON类型等等,非常…...

Python学习笔记:使用字符串

使用字符串 使用字符串格式:精简版 百分号 % # 指定要设置其格式的值时,可使用单个值(如字符串或数字),可使用元组(如果要设置多个值得格式),还可使用字典 >>> format …...

echarts饼图封装

1. 组件 <template> <div :id"id" class"main" :style"{ width: width, height: height }" :ref"id" ></div> </template> <script> import * as echarts from "echarts"; export default { …...

Web3.0 教学基础一

目录 什么是web3.0 Web 1.0 概念 Web 2.0 概念 Web 3.0 概念 Web 3.0 的优势 什么是DAPP 什么是web3.0 在了解web3.0之前我们需要了解下前面的web1.0与web2.0。 Web 1.0 概念 Web1.0是万维网最初的版本&#xff0c;而静态网站则被认为是全网Web 1.0的起源&#xff0c;用…...

body使用渐变色无效的原因之一:html没有设置高度

直接在css文件中对body设置渐变色&#xff1a; body {height: 100%;background: -webkit-linear-gradient(120deg, #a1c4fd 0%, #c2e9fb 100%);background: -moz-linear-gradient(120deg, #a1c4fd 0%, #c2e9fb 100%);background: -o-linear-gradient(120deg, #a1c4fd 0%, #c2e…...

Python3 函数实例及演示

函数是组织好的&#xff0c;可重复使用的&#xff0c;用来实现单一&#xff0c;或相关联功能的代码段。 函数能提高应用的模块性&#xff0c;和代码的重复利用率。我们已经知道Python提供了许多内建函数&#xff0c;比如print()。但也可以自己创建函数&#xff0c;这被叫做用户…...

HTB打靶(Active Directory 101 Multimaster)

Nmap扫描 Starting Nmap 7.93 ( https://nmap.org ) at 2023-02-08 02:52 EST Stats: 0:00:51 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan SYN Stealth Scan Timing: About 55.85% done; ETC: 02:54 (0:00:40 remaining) Nmap scan report for 10.129…...

漏洞预警|Apache Sling JCR Base 存在JNDI注入漏洞

棱镜七彩安全预警 近日网上有关于开源项目Apache Sling JCR Base 存在JNDI注入漏洞&#xff0c;棱镜七彩威胁情报团队第一时间探测到&#xff0c;经分析研判&#xff0c;向全社会发起开源漏洞预警公告&#xff0c;提醒相关安全团队及时响应。 项目介绍 Apache Sling是一个基于…...

【学习笔记】DFA的构造

虽然平时做过但是考场上肯定还是不会&#xff0c;不过没事干还是写一下吧 Myhill-Nerode\text{Myhill-Nerode}Myhill-Nerode 定理&#xff1a;给定一个语言LLL&#xff0c;定义在字符串上一个关系为&#xff0c;若对于所有的zzz&#xff0c;xzxzxz在LLL中当且仅当yzyzyz在LLL中…...

MyBatis 之二(增、删、改操作)

文章目录1. 修改操作1.1 在 mapper&#xff08;interface&#xff09;里面添加修改方法的声明1.2 在 XMl 中添加 <update> 标签和修改的 sql 代码1.3 在 UserMapper 中右键 Generate 点击 Test 生成 update 测试类2. 删除操作2.1 在 mapper &#xff08;interface&#x…...

28k入职腾讯测试岗那天,我哭了,这5个月付出的一切总算没有白费~

先说一下自己的个人情况&#xff0c;计算机专业&#xff0c;16年普通二本学校毕业&#xff0c;经历过一些失败的工作经历后&#xff0c;经推荐就进入了华为的测试岗&#xff0c;进去才知道是接了个外包项目&#xff0c;不太稳定的样子&#xff0c;可是刚毕业谁知道什么外包不外…...

【surfaceflinger源码分析】surfaceflinger进程的消息驱动模型

概述 对于surfaceflinger大多数人都知道它的功能是做图形合成的&#xff0c;用英语表示就是指composite。其大致框图如下: 各个Android app将自己的图形画面通过surface为载体通过AIDL接口(Binder IPC)传递到surfaceflinger进程surfaceflinger进程中的composition engine与HW…...

「架构师」001计算机组成与体系结构

文章目录 前言一、计算机结构1.1 计算机组成结构1.2 CPU组成1.3 冯诺依曼结构与哈佛结构二、存储结构2.1 层次化存储结构2.2 Cache三、数据传输控制方式四、总线五、CISC与RISC六、流水线七、校验码八、嵌入式前言 本文主要介绍计算机组成与体系结构。 一、计算机结构 1.1 计…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...