当前位置: 首页 > 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 计…...

既然有HTTP协议,为什么还要有RPC

既然有HTTP协议&#xff0c;为什么还要有RPC&#xff1f; 从TCP聊起 作为一个程序员&#xff0c;假设我们需要在A电脑的进程发一段数据到B电脑的进程&#xff0c;我们一般会在代码里使用socket进行编程。 这时候&#xff0c;我们可选项一般也就TCP和UDP二选一。TCP可靠&…...

【新2023】华为OD机试 - 选座位(Python)

华为 OD 清单查看地址:blog.csdn.net/hihell/category_12199275.html 选座位 题目 疫情期间需要大家保证一定的社交距离 公司组织开交流会议,座位有一排共N个座位 编号分别为[0...n-1] 要求员工一个接着一个进入会议室 并且还可以在任何时候离开会议室 每当一个员工进入时…...

数据分析与SAS学习笔记4

INPUT语句&#xff1a;格式修饰符&#xff1a; “:” 修饰符。表示从下一个非空格列读入数据&#xff0c;直到:1 遇到再下一个空格列&#xff1b; 2 读到预先定义的变量长度&#xff1b; 3 数据行结束。哪个先出现就在哪儿结束。 “&” 修饰符。表示从下一个非空格列读入…...

Xepor:一款针对逆向工程和安全分析的Web路由框架

关于Xepor Xepor是一款专为逆向分析工程师和安全研究专家设计的Web路由框架&#xff0c;该工具可以为研究人员提供类似Flask API的功能&#xff0c;支持以人类友好的方式拦截和修改HTTP请求或HTTP响应信息。 该项目需要与mitmproxy一起结合使用&#xff0c;用户可以使用Xepor…...

Hadoop核心组成和生态系统简介

一、Hadoop的概念 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下&#xff0c;开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统&#xff08; Distributed File System&#xff09;&am…...

Flutter-Charts_painter大数据量绘制性能优化-数据收敛

Flutter-Charts_painter大数据量绘制性能优化-数据收敛 1、背景介绍 HRV测量仪器上传的数据&#xff0c;每秒有250个数据&#xff0c;业务上需要测量180秒&#xff0c;预计有3w-5w个数据点需要绘制到折线图上去。Charts_painter绘制这么大的数据是时候会有些卡顿&#xff0c;…...

使用 GeForce Experience 更新 NVIDIA GPU 显卡驱动

使用 GeForce Experience 更新 NVIDIA GPU 显卡驱动1. NVIDIA GeForce Experience 2. 驱动程序 -> 检查更新文件 3. 下载 如果有可用的新版驱动的话&#xff0c;点击后方的 [下载] 按钮即可。 4. 安装 [快速安装] 按照默认设置安装驱动&#xff0c;[自定义安装] 可以自行…...

Java泛型的<? super T>,<? extend T>的区别

&#xff1f; extends T ? extends T 描述了通配符上界, 即具体的泛型参数需要满足条件: 泛型参数必须是 T 类型或它的子类, 例如: List<? extends Number> numberArray new ArrayList<Number>(); // Number 是 Number 类型的 List<? extends Number>…...

如何做出好看的Excel可视化图表?

可视化死磕excel是不行的&#xff0c;作为数据分析行业的偷懒大户&#xff0c;分享一些我在可视化工具上的使用心得&#xff0c;总结了三大类&#xff1a;快速出图类、专业图表类、高端大屏类。个人经验&#xff0c;大家按需采纳&#xff1a; 一、快速出图类 如果你只是因为偶…...

智能吸吹一体式方案设计特点

一、家用吸吹一体吸尘器方案研发设计要素&#xff1a; 1.小巧的机身设计&#xff0c;一手掌握&#xff0c;无论是床底、沙发下还是家具缝隙之中都能够使用。 2.无线&#xff0c;插电两用&#xff0c;在家方便可插电使用。内置可充电锂电池&#xff0c;充满电也可无线使用。 3.采…...

做泵阀生意到哪个网站/策划公司

The result is also 3. (Translated from Chinese to English)...

专业做幼儿园网站/小红书推广怎么收费

2016-10-15更新 添加了3.3–为微信电脑版增加桌面启动器(快捷方式) CSDNGitHubLinux和Mac下的微信电脑版electronic-wechat(非官方)AderXCoding/system/tools/electronic_wechat 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可 1 electronic-…...

公司网站制作与维护/快手seo软件下载

之前写过一篇树莓派使用12864接口的2.3寸显示屏的文章&#xff0c;当时用的是并口&#xff0c;占用了太多的gpio资源&#xff0c;于是考虑使用spi接口的显示屏&#xff0c;最近的项目正好用到了spi接口的oled的显示屏&#xff0c;于是考虑把它用到树莓派上,先介绍下这款屏幕&am…...

大连金州代做网站公众号/快速排名教程

马哲包括5大部分即唯物论&#xff0c;辩证法&#xff0c;认识论&#xff0c;历史唯物论&#xff0c;资本主义本质论。 其中辩证法又包括&#xff1a; 1.两大特征&#xff1a;&#xff08;1&#xff09;普遍联系&#xff08;2&#xff09;永恒发展。 2.三大规律&#xff1a;&…...

网站需要在公安局备案/外包网络推广公司

成为经理人的捷径 (一) 其实世界上没有一步登天的捷径&#xff0c;“条条大路通罗马。”选择哪条、怎么走完全是个人的意愿。要能找一条最适合自己的路&#xff0c;想成为高效的经理人&#xff0c;就要靠有效的方法。接下来我们就围绕着这个“方法”展开简单的讨论。 高的效绩是…...

帮朋友做网站不给钱/百度搜索推广多少钱

路由器的基本配置 路由器是网络异种网络互联与多个子网互联的重要设备。简单来说&#xff0c;路由器可以将不同的局域网进行互联和通信。 路由器疑点 相比大家都路由器设备并不陌生&#xff0c;日常生活随处可见。 明明处于三层的路由器设备为何运用会比交换机普遍呢&#xf…...