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

day12_oop_抽象和接口

今日内容

零、 复习昨日
一、作业
二、抽象
三、接口

零、 复习昨日

final的作用

  • 修饰类,类不能被继承
  • 修饰方法,方法不能重写
  • [重点]修饰变量/属性,变成常量,不能更改

static修饰方法的特点

  • static修饰的方法,可以通过类名调用

static修饰的属性特点

  • 在内存只有一份,被该类的所有对象共享

多态效果形成的前提

  • 继承
  • 重写
  • 向上转型

多态使用的场景

  • 方法的参数列表是父类类型,调用方法传参数传入子类对象
  • 数组是父类类型,数组存储子类对象
  • 方法的返回值是父类类型, 返回时子类对象

什么叫向下转型?如何才能转型成功?

  • 父类类型转成子类类型,需要强制转换
  • 先向上转型再向下转型,才可以成功

一、作业

见代码

二、抽象类

2.1 介绍

抽象: 不好理解不够具体看不懂

抽象类(abstract): 这个类是抽象的,方法与之前方法不一样,有点看不明白

2.2 语法

  • 属性没有抽象性,不能被abstract修饰
  • 抽象方法就是没有方法体且被abstract修饰的方法
  • 抽象方法必须放在抽象类中,抽象类需要使用abstract修饰
  • 抽象类中可以有正常方法的
  • 抽象类也可以构造方法,但是不能被new直接创建对象
  • 抽象类还是类!!!

// 抽象类(父类)

public abstract class Animal {int age;// 属性不能被抽象修饰// 抽象方法public abstract void eat();// 正常方法public void move(){System.out.println("动物移动" );}// 构造方法public Animal(){System.out.println("Animal() 抽象类构造执行了" );}
}

抽象类有抽象方法,正常方法,构造方法,但是不能创建对象,它有啥用?

主要是用来被子类继承的

  • 子类可以继承抽象类
  • 继承抽象类后要么定义子类为抽象类要么就实现(implement)抽象方法

// Dog类

// 继承抽象类
public class Dog extends Animal{// 实现抽象方法(重写)@Overridepublic void eat() {System.out.println("狗吃骨头" );}
}

// 测试类

public static void main(String[] args) {// 创建抽象类对象// 发现不可以!!!// Animal animal = new Animal();// 创建子类Dog dog = new Dog( );dog.eat();// 调用自己重写过的方法dog.move();// 调用父类中的方法}

2.3 使用总结

抽象类有方法,有个构造但是创建对象,他有什么用处?

  • 被继承!!!
  • 当做父类引用去使用—> 多态的场景下都可以使用抽象
    • 比如之前写的那些类(动物类,员工类,形状类等等父类方法其实都会被子类重写)

image-20240305103851139

既然有无抽象与之前写法用法都是多态,没有太多区别,那么为什么还需要抽象?

  • 抽象有一层限制的思想以及作用,即继承抽象类,必须重写

使用上的经验总结:

  • 对于别人写好的抽象类,如果要用,就要知道抽象类可以继承,然后重写抽象方法即可
  • 如果自己要设计代码,什么时候需要设计抽象类?
    • 设计思想: 抽象差异化,具体共同点
    • 当设计时发现有很多类用到了重复的代码,此时要想到将重复代码抽象到父类
    • 那要不要设计成抽象父类?得看情况
      • 如果子类中都需要使用同一个公共的方法,即子类不需要改变就能用的方法,那就把设计在父类中 具体共同点
      • 如果子类都需要使用一个方法,但是父类方法又不适用即子类需要重写的时候,那就把方法设计成抽象方法,此时就需要抽象类 抽象差异化

2.4 练习

将之前所写的多态的题目(员工类,形状类,动物类,兽医类)将父类变成抽象类,方法变成抽象方法,练习

三、接口

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

java的数据类型

  • 基本数据类型
  • 引用数据类型: 数组,类,接口

3.1 语法特征

  • 接口不是类,不需要class修饰而是interface
  • 接口所有属性都默认被public static final修饰,即全都是静态常量
  • 接口中所有方法都是抽象方法,且默认都被public abstract修饰
  • 不能定义构造方法,不能创建对象

// 接口

public interface TypeC {// 属性public static final int length = 1;String brand = "HUAWEI";// 方法public abstract void chongdian();// 没有构造// public TypeC(){//// }
}

接口存在的意义? 就是为了让子类使用,去实现接口

// 子类

  • 实现接口使用**implements**关键词
  • 子类实现接口,要重写全部的抽象方法
  • 类可以**允许同时实现多个接口(**多实现)
  • 类还可以在继承的同时再实现接
// 子类继承类,同时实现接口,且允许多实现
public class Phone extends Dianzi implements TypeC,Tongxin{@Overridepublic void chongdian() {System.out.println("手机充电" );}@Overridepublic void chuansu() {System.out.println("传输数据" );}@Overridepublic void tongxin() {System.out.println("可以卫星通信" );}
}

特殊的, 接口是可以继承接口的,且是允许多继承

image-20240305114101017

3.2 作用?

目前编码而言: 就当做一个父接口在多态中使用

  • 即接口也可以当做父引用指向子类对象

image-20240305161228090

既然都是当多态去使用,抽象和接口又什么区别?

  • 抽象是类,接口不是类,类有单继承限制,接口没有,且允许继承同时再实现,这样呢可以对代码扩展能力有了提升
  • 抽象是类,类是一个模板是一个统称,描述一类东西的;接口是一种规范,约束,能力的体现,所有在设计代码时,代表物体,实体的设计成类,代表能力的设计成接口

接口往后,往深层次理解,接口是一种规范,约定! 按照规范去设计实现,就可以跟人家使用接口的物体进行对接

  • 电脑 有USB接口,外设厂家按照USB接口实现创建了设备(键盘,鼠标,麦克风等等),这些外设就可以和电脑产生联系 --> 这里的USB接口作用就是规范,放两者产生关系 关联的

3.3 练习

pdf练习题

相关文章:

day12_oop_抽象和接口

今日内容 零、 复习昨日 一、作业 二、抽象 三、接口 零、 复习昨日 final的作用 修饰类,类不能被继承修饰方法,方法不能重写[重点]修饰变量/属性,变成常量,不能更改 static修饰方法的特点 static修饰的方法,可以通过类名调用 static修饰的属性特点 在内存只有一份,被该类的所有…...

linux 将 api_key设置环境变量里

vi ~/.bashrc在最后添加api_key的环境变量 export GEMINI_API_KEYAIza**********WvpX7FwbdM刷新配置 source ~/.bashrc使用python 读取环境变量 import os gemini_api_key os.getenv(GEMINI_API_KEY) print(gemini_api_key)...

java八股文复习-----2024/03/03

1.接口和抽象类的区别 相似点: (1)接口和抽象类都不能被实例化 (2)实现接口或继承抽象类的普通子类都必须实现这些抽象方法 不同点: (1)抽象类可以包含普通方法和代码块&#x…...

UE4 Niagara 关卡3.4官方案例解析

Texture sampling is only supported on the GPU at the moment.(纹理采样目前仅在GPU上受支持) 效果:textures can be referenced within GPU particle systems。this demo maps a texture to a grid of particles(纹理可以在GPU粒子系统中被引用这个演…...

C# Onnx segment-anything 分割万物 一键抠图

目录 介绍 效果 模型信息 sam_vit_b_decoder.onnx sam_vit_b_encoder.onnx 项目 代码 下载 C# Onnx segment-anything 分割万物 一键抠图 介绍 github地址:GitHub - facebookresearch/segment-anything: The repository provides code for running infere…...

Linux配置网卡功能

提示:工具下载链接在文章最后 目录 一.network功能介绍二.配置network功能2.1 network_ip配置检查 2.2 network_br配置2.2.1 配置的网桥原先不存在检查2.2.2 配置的网桥已存在-修改网桥IP检查2.2.3 配置的网桥已存在-只添加网卡到网桥里检查 2.3 network_bond配置检查 2.4 netw…...

【C++】十大排序算法之 归并排序 快速排序

本次介绍内容参考自:十大经典排序算法(C实现) - fengMisaka - 博客园 (cnblogs.com) 排序算法是《数据结构与算法》中最基本的算法之一。 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序…...

x-pack的破解方式和免费jar包!!可直接用!!

原理介绍 我们平时为es安装x-pack组件,用elasticsearch-plugin install x-pack ,安装成功后。 1.cd $es目录/pulgins/x-pack 里面有一个x-pack-5.6.2.jar ,将jar包反编译,然后将里面的licence的程序改下。再编译成jar包。 2…...

最新版本,Midjourney保姆级教程!

一、认识Midjourney 1.1、MidJourney是什么? 随着ChatGPT的横空出世,人类正式迈入AI元年,其中MidJourney便是AI绘图工具,它能根据用户输入的文字描述(提示词)生成绘画作品,不管是灵动的人物&a…...

Android中的几种定位方式调用详解

目前,移动端大致通过三种方式来进行设备定位:GPS、基站、wifi。本文就详细的讲解一下这几种定位方式和实现方法。 前言 android中我们一般使用LocationManager来获取位置信息,这里面有四中provider: public static final Strin…...

【软件测试】接口调不通排查分析+常遇面试题总结

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、接口调不通&am…...

c++基础学习第三天(指针,结构体)

c基础学习第三天(指针,结构体) 文章目录 1、指针1.1、指针的基本概念1.2、指针变量的定义和使用1.3、 指针所占内存空间1.4、空指针和野指针1.5、 const修饰指针1.5.1、const修饰指针-常量指针1.5.2、const修饰常量-指针常量1.5.3、const即修…...

【数仓】zookeeper软件安装及集群配置

相关文章 【数仓】基本概念、知识普及、核心技术【数仓】数据分层概念以及相关逻辑【数仓】Hadoop软件安装及使用(集群配置)【数仓】Hadoop集群配置常用参数说明 一、环境准备 准备3台虚拟机 Hadoop131:192.168.56.131Hadoop132&#xff…...

Qt 实现橡皮擦拭显示图片

1.简介 在一些游戏中看见类似解密破案的效果,使用手触摸去擦拭图片上的灰尘,然后显示最终的图片,所以也想试试Qt实现的效果。大家有自己想做的效果,都可以尝试。 以下是效果展示图。 可以控制橡皮擦的大小,进行擦拭…...

Vue3+Element-Plus中ELMessage样式丢失处理

Vu3Element-Plus项目中,element-plus使用按需引入有时会出现样式失效和在vscode中使用会报错[找不到名称“ElMessage”。ts(2304)]错误 ELMessage弹框样式丢失处理方法 使用按需引入就不能手动再引入 import { ElMessage } from "element-plus";ElMessage.success…...

97 spring 中的泛型类型注入

前言 呵呵 同样是 最近同事碰到的一个问题 他不太懂 英语, 看到的说明是 缺少一个 RedisTemplate 的实例, 但是找到了一个 RedisTemplate 的实例 呵呵 和我这里 spring 版本似乎是不太一样, 错误信息 有一些差异 以下环境基于 jdk8 spring-5.0.4-RELEASE 测试用例 BeanCon…...

C++设计模式

单例模式 单例模式保证一个类只能创建一个对象,并提供全局访问点。通常用于全局共享例如日志、数据库连接池等。 Lazy Initialization 优点:需要时才初始化,节省空间 缺点:线程不安全 class Singleton{ private:static Singlet…...

反向代购业务系统|无货源代购中国商品|反向海淘代购系统

什么是淘宝代购 淘宝代购是近年兴起的一种购物模式,是帮国外客户购买中国商品。主要是通过万邦科技的外贸代购模式,把淘宝、 天猫等电商平台的全站商品通过API接入到你的网站上,瞬间就可以架设一个有数亿产品的大型网上商城,而且…...

Linux 进程间通信

目录 管道 匿名管道(pipe) 有名管道(fifo) 小结 共享内存 消息队列 信号量 System V IPC的结构设计 Posix与System V的关系 管道 匿名管道(pipe) 我们知道,在Linux中通过fork创建的子…...

hippy 调试demo运行联调-mac环境准备篇

适用对于终端编译环境不熟悉的人看,仅mac端 hippy 调试文档官网地址 前提:请使用node16 联调预览效果图: 编译iOS Demo环境准备 未跑通,待补充 编译Android Demo环境准备 1、正常安装Android Studio 2、下载Android NDK&a…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

【JVM】- 内存结构

引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...