Java 抽象知识笔记总结(油管)
Java系列文章目录
Java Optional 容器笔记总结
文章目录
- Java系列文章目录
- 一、前言
- 二、学习内容:
- 三、问题描述
- 四、解决方案:
- 4.1 抽象类的使用
- 4.2 抽象类与接口的区别
- 4.2.1 接口复习
- 4.2.2 具体区别
- 4.2.3 使用场景
- 4.2.3.1 抽象类使用场景
- 4.2.3.2 接口使用场景
- 五、总结:
- 5.1 学习总结:
一、前言
目的:学习Java抽象相关知识
- 对油管博主John讲解的抽象相关知识进行笔记总结
二、学习内容:
- 抽象类的使用
- 抽象类与接口的区别
三、问题描述
- 抽象类相关知识没有实践经验
四、解决方案:
4.1 抽象类的使用
抽象类注意事项
- 新建的类不能是抽象类
- 子类继承抽象类必须实现抽象方法
参考代码如下:
package org.example;public abstract class Animal {int age;public String name;public abstract void makeNoise();}
package org.example;public interface AnimalStuff {//int age = 5;void pool();}
package org.example;public class Cat extends Animal implements AnimalStuff{@Overridepublic void makeNoise() {System.out.println("Meow");}@Overridepublic void pool() {System.out.println("Cat is pool");}
}
package org.example;public class Main {public static void main(String[] args) {Cat cat = new Cat();cat.makeNoise();cat.pool();}
}
- 我们可以通过子类继承抽象类来实现抽象方法
4.2 抽象类与接口的区别
4.2.1 接口复习
- 接口里面包含终态静态与抽象
4.2.2 具体区别
我们已经知道Cat类不管是继承抽象类还是接口
都能在子类实现抽象方法
既然都能实现为什么我们还需要抽象类呢
区别:
- 一个子类只能继承一个父类,但可以继承多个接口
- 接口字段必须是静态与终态(终态已经定义了对子类来说没用)
- 抽象类可以有抽象方法也可以用其他方法灵活性高
相同点:
- 抽象方法必须实现
4.2.3 使用场景
4.2.3.1 抽象类使用场景
Animal抽象类与Cat类
Cat与Animal是隶属关系(猫是动物)大部分动物一定会发声
所以抽象类Animal就可以定义发声的抽象方法让子类一定实现发声方法
- 类相关性较高
4.2.3.2 接口使用场景
Cat类与AnimalStuff接口
同理,平级关系几乎大部分事务都能用这个抽象方法
所以方法使用与类关系不大
- 类相关性较低
五、总结:
5.1 学习总结:
抽象类的作用:
- 定义共享的属性和行为。
- 提供一种规范,让子类去实现。
- 避免"上帝类"(只有一个超级类做所有事情),鼓励模块化的继承。
抽象类与接口区别:
- 一个子类只能继承一个父类,但可以继承多个接口
- 接口字段必须是静态与终态(终态已经定义了对子类来说没用)
- 抽象类可以有抽象方法也可以用其他方法灵活性高
声明:如本内容中存在错误或不准确之处,欢迎指正。转载时请注明原作者信息(麻辣香蝈蝈)。
相关文章:

Java 抽象知识笔记总结(油管)
Java系列文章目录 Java Optional 容器笔记总结 文章目录 Java系列文章目录一、前言二、学习内容:三、问题描述四、解决方案:4.1 抽象类的使用4.2 抽象类与接口的区别4.2.1 接口复习4.2.2 具体区别4.2.3 使用场景4.2.3.1 抽象类使用场景4.2.3.2 接口使用…...

鲜花销售小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,农户管理,产品分类管理,农产品管理,咨询信息管理,咨询回复管理,系统管理 微信端账号功能包括:系统首页&…...

Golang | Leetcode Golang题解之第324题摆动排序II
题目: 题解: func wiggleSort(nums []int) {n : len(nums)x : (n 1) / 2target : quickSelect(nums, x-1)transAddress : func(i int) int { return (2*n - 2*i - 1) % (n | 1) }for k, i, j : 0, 0, n-1; k < j; k {tk : transAddress(k)if nums[t…...

32、Python之面向对象:对象的表示,再论Python是dict包括语法糖
引言 在前面介绍Python容器的时候,我们曾经用过这种夸张的表述,“Python就是包裹在一堆语法糖中的字典”。虽然夸张,其实更多的是为了突出Python中dict的强大之处。今天这篇文章,打算看下Python中类对象、实例对象的表示及内存管理…...
高级java每日一道面试题-2024年8月07日-网络篇-你对TCP的三次握手了解多少?
如果有遗漏,评论区告诉我进行补充 面试官: 你对TCP的三次握手了解多少? 我回答: TCP(Transmission Control Protocol)的三次握手是TCP建立连接的过程,它是TCP/IP协议族中一个关键的概念。三次握手确保了双方之间的连接是双向的࿰…...
vite.config.ts中proxy的rewrite理解
服务器配置都是在开发情况下适用!! // 服务器配置 server: {//允许IP访问host: "0.0.0.0",//应用端口(默认:3000)port: Number(env.VITE_APP_PORT),// 运行是否自动打开浏览器open: true,// 代理配置proxy:…...

大数据环境下用户数据隐私安全防护系统的设计与实现(论文+源码)_kaic
摘 要 现如今互联网已在世界范围内广泛的应用和发展,特别是移动互联网Web 技术快速发展,然而最近几年经常发生互联网用户信息泄露及财产损失问题,网络安全漏洞严重威胁Web应用程序安全及互联网用户的网络使用安全,因此现急需一…...

基于springboot+vue+uniapp的“口腔助手”小程序
开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…...
算法刷题之链表
// 单链表 struct ListNode {int val; // 节点上存储的元素ListNode *next; // 指向下一个节点的指针ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数 };ListNode* head new ListNode(5); 重要方法:虚拟头节点 个人方法:指针转为数组…...
C# 设计模式之适配器模式
总目录 前言 在实际的开发过程中,由于需求的变化和扩展,我们的代码也需要做相应的扩展。想象这样一个场景,原项目中接口返回的数据是XML格式的数据,但现在来了一个新客户,它期望接口返回的数据类型为json格式的。想要…...

BFS实现迷宫最短路径
结合队列的知识利用 广度优先遍历,通过对能走的路径的记录以及对走过路径的标记,进行多条路搜查 一、理论基础 如下图的迷宫: 选取所走方向(针对某一个位置)下,右,上,左࿰…...

Linux IPC解析:匿名命名管道与共享内存
目录 一.IPC机制介绍二.匿名与命名管道1.匿名管道2.命名管道3.日志 三.共享内存三.System V 标准1.System V简介2.IPC在内核的数据结构设计3.信号量 一.IPC机制介绍 IPC(Inter-Process Communication,进程间通信)是计算机系统中不同进程之间交…...

Codeforces Round 964 (Div. 4) A~G
封面原图 画师ideolo A - AB Again? 题意 给你一个两位数,把他的个位和十位加起来 代码 #include <bits/stdc.h> using namespace std; typedef long long ll; typedef double db; typedef pair<int,int> pii; typedef pair<ll,ll> pll;voi…...
单体应用提高性能和处理高并发-使用缓存
要在单体应用中实现高并发,并利用缓存技术来提高性能,需要深入了解缓存的应用场景、选择合适的缓存工具,以及在具体代码中实现缓存策略。以下是详细说明如何在单体应用中使用缓存来处理高并发的内容,包括常见的缓存框架和实际的代…...
ollama教程——使用LangChain调用Ollama接口实现ReAct
ollama入门系列教程简介与目录 相关文章: Ollama教程——入门:开启本地大型语言模型开发之旅Ollama教程——模型:如何将模型高效导入到Ollama框架Ollama教程——兼容OpenAI API:高效利用兼容OpenAI的API进行AI项目开发Ollama教程——使用LangChain:Ollama与LangChain的强强…...

【Bug分析】Keil报错:error: #18:expected a “)“问题解决
【Bug分析】Keil报错:error: #18:expected a “)”问题解决 前言bug查找bug解决方法小结 前言 keil编译时出现一个问题,缺少一个右括号。然后仔细查看代码,并没有括号缺失。 如下,代码括号正常。 bug查找 站内文章…...
MAC上设置快捷打开终端以及如何运用剪切快捷键
在Mac上设置一个快捷键,在当前文件夹中打开终端,你可以使用Automator创建一个服务,然后将其分配给一个快捷键。以下是步骤: 1. 创建Automator服务 打开 Automator(你可以在应用程序文件夹中找到它,或使用…...

linux docker安装 gitlab后忘记root密码如何找回
1. docker ps - a 查看当前gitlab 当前的id2. docker exec -it gitlab /bin/bash 进入docker git 容器中【gitlab 注意可以上图中的name,也可以是id都可以的】,如下图3.gitlab-rails console -e production 输入该指令,启动Ruby on Rails控制台&…...

C语言典型例题27
《C程序设计教程(第四版)——谭浩强》 习题2.4 用下面的scanf函数输入数据 使a3,b7,x8.5,y71.8,c1A,c2a。问在键盘上怎么输入 代码 //《C程序设计教程(第四版)——谭浩强》 //习题2.4 用下面的scanf函数输入数据,使…...

clion开发stm32f4系列(一)————移植rt-thread os系统
前言 本次使用的rt-thread的版本为5.0.2基于rt-thread sudio生成的源码进行拷贝和修改工程基于上次创建工程的项目进行修改。本次工程只是用了serial和pin组件,其他后面用到再进行添加 拷贝rt-thread源码库 通过CMakeLists来进行管理 顶级(rt-thread目录) cmake_minimum_req…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...