[Java基础揉碎]抽象类

目录

通过问题引出

介绍

关键点

 细节

​编辑

抽象类的最佳设计模式--模版设计模式

1.先用最容易想到的方法

2.分析问题,提出使用模板设计模式


通过问题引出

假如我们有个动物类, 动物都有eat吃的方法, 但是具体吃什么, 我们不知道, 因为是什么动物我们不知道, 那么我们就可以声明为抽象类 

>>>当父类的某些方法,需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类 

介绍

所谓抽象方法就是没有实现的方法

所谓没有实现就是指, 没有方法体

 当一个类中存在抽象方法是, 这个类也必须声明为抽象类

 一般来说, 抽象类会被继承, 有子类来具体实现

关键点

1) 用abstract关键字来修饰一个类时,这个类就叫抽象类

        访问修饰符 abstract 类名{ 

        }

2) 用abstract关键字来修饰一个方法时,这个方法就是抽象方法

        访问修饰符 abstract 返回类型 方法名(参数列表);

        //没有方法体

3)抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现它

4)抽象类,是考官比较爰问的知识点, 在框架和设计模式使用较多

 细节

1)抽象类不能被实例化

2)抽象类不一定要包含abstract方法。也就是说, 抽象类可以没有abstract方法

3)一旦类包含了abstract方法,则这个类必须声明为abstract 

4) abstract 只能修饰类和方法,不能修饰属性和其它的

5) 抽象类可以有任意成员[因为抽象类还是类],比如:非抽象方法、构造器、静态属性等等

6) 抽象方法不能有主体,即不能实现

7) 如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为 abstract类

 8) 抽象方法不能使用private、 final 和 static来修饰,因为这些关键字都是和重写相违背的

抽象类的最佳设计模式--模版设计模式

如果有一个需求

1)有多个类,完成不同的任务job

2) 要求统计得到各自完成任务的时间

1.先用最容易想到的方法

A类如下方法:

B类有如下方法:

 然后我们去执行:

但是这样有一个问题如果每个类的还有多个job需要去计算, 这样代码的复用率极低 

我们可能会说可以把重复的代码抽出来单独写一个如下的方法, 实现代码的复用

这样也有一个问题就是这样每个类都需要写一个这样的方法

2.分析问题,提出使用模板设计模式

所以我们就需要抽象类和抽象方法, 将每个类要写的这个方法抽离为一个模版

AA类去重写 

 BB类也去重写

 打印效果相同

aa.calulateTime的调用过程就是, 它先到AA类里面去看有没有这个方法, 没有之后找到父类的这个方法, 父类去掉用job, 此时上面的job是抽象方法, 这个抽象方法通过动态绑定机制, 绑定到当前对象, 在去调用AA 类里面的job方法 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/487595.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Unity】uDD插件抓屏文字显示不清晰怎么办?

【背景】 之前介绍过用一款简称uDD(uDesktopDuplication)的开源插件抓取电脑桌面。整体效果不错,看电影很流畅。但是当切换到文档,或者仔细看任何UI的文字部分时,发现就模糊了。 【分析】 由于是依托于Canvas上的Te…

如何利用python 把一个表格某列数据和另外一个表格某列匹配 类似Excel VLOOKUP功能

环境: python3.8.10 Excel2016 Win10专业版 问题描述: 如何利用python 把一个表格某列数据和另外一个表格某列匹配 类似Excel VLOOKUP功能 先排除两表A列空白单元格,然后匹配x1表格和x2表格他们的A列,把x1表格中A列A1-A810范围对应的B列B1-B810数据,匹配填充到x2范围…

Microsoft Excel 快捷键 (keyboard shortcut - hotkey)

Microsoft Excel 快捷键 [keyboard shortcut - hotkey] References 表格内部换行快捷键 Alt Enter 快速将光标移到表末 Ctrl End 快速将光标移到表首 Ctrl Home References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

416. 分割等和子集

思路:一道简单的01背包的dp,判断背包和为sum/2的背包是否存在。 一维01背包,第一层枚举物品i,第二层从后往前遍历容量sum/2->nums[i],因为小于nums[i]就没意义了,不用考虑,肯定是不存在的。 …

4.1 RK3399项目开发实录-案例开发之MIPI 摄像头开发(wulianjishu666)

嵌入式从零到项目开发全套例程资料 链接:https://pan.baidu.com/s/1ksCQN__jD8ZrJhw8sWzhwQ?pwdvvfz 3.2. MIPI 摄像头 带有 MIPI CSI 接口的 RK3399 板子都添加了双 MIPI 摄像头 OV13850 的支持,应用中也添加了摄像头的例子。下面介绍一下相关配置。…

信息系统项目管理(第四版)(高级项目管理)考试重点整理 第15章 项目风险管理(四)

博主2023年11月通过了信息系统项目管理的考试,考试过程中发现考试的内容全部是教材中的内容,非常符合我学习的思路,因此博主想通过该平台把自己学习过程中的经验和教材博主认为重要的知识点分享给大家,希望更多的人能够通过考试&a…

C语言程序与设计——预处理命令

宏 在C语言中宏有三种形式: 定义符号常量定义傻瓜表达式定义代码段 在使用宏的过程中需要注意的是,宏的作用仅仅是在预处理阶段对代码进行替换,而非进行运算,所以在使用时,如果出现了我们预期之外的结果,很有可能是宏…

Linux Load AVG linux 平均负载是什么? 简单解释说明

linux 命令基础汇总 命令&基础描述地址linux curl命令行直接发送 http 请求Linux curl 类似 postman 直接发送 get/post 请求linux ln创建链接(link)的命令创建链接(link)的命令linux linklinux 软链接介绍linux 软链接介绍l…

Java代码基础算法练习-搬砖问题-2024.03.25

任务描述: m块砖,n人搬,男搬4,女搬3,两个小孩抬一砖,要求一次全搬完,问男、 女、小孩各若干? 任务要求: 代码示例: package M0317_0331;import java.util.S…

VUE:内置组件<Teleport>妙用

一、<Teleport>简介 <Teleport>能将其插槽内容渲染到 DOM 中的另一个位置。也就是移动这个dom。 我们可以这么使用它: 将class为boxB的盒子移动到class为boxA的容器中。 <Teleport to".boxA"><div class"boxB"></div> &…

RuoYi-Vue若依框架-新增子模块启动后,前端页面报接口404

如何新建子模块可以参考RuoYi-Vue若依框架-如何新增子模块 我在新增依赖的时候提过版本号的问题&#xff0c;如果不是按照我的博客走的&#xff0c;然后接口报了404&#xff0c;可以选择添加父版本号&#xff0c;官方的参考文档是没写的&#xff0c;但添加了确实能解决这个问题…

数字芯片retention cell

​低功耗设计一直是芯片设计的重中之重&#xff0c;景芯SoC训练营采用的低功耗技术有&#xff1a; 1、Clk gating&#xff0c;关掉不工作模块的时钟信号&#xff1b; 2、Power gating&#xff0c;关掉不工作模块的电源&#xff1b; 由于省去了leakage power&#xff0c;Powe…

蓝桥杯第十五届抱佛脚(三)枚举法与尺取法

蓝桥杯第十五届抱佛脚&#xff08;三&#xff09;枚举法与尺取法 很多人将蓝桥杯戏称为“暴力杯”&#xff0c;因为蓝桥杯采用了OI的赛制。在这种赛制下&#xff0c;即使对于某些大题答案不清楚的情况下&#xff0c;也可以通过暴力方法获得部分分数。一提到暴力&#xff0c;人…

Java代码基础算法练习-字符串反转-2024.03.25

任务描述&#xff1a; 输入一个字符串&#xff0c;然后将此字符串反转&#xff08;字符串最长不超过25个字符&#xff09; 任务要求&#xff1a; 代码示例&#xff1a; package M0317_0331;import java.util.Scanner;public class m240325_1 {public static void main(String…

STM32之HAL开发——串口配置(CubeMX)

串口引脚初始化&#xff08;CubeMX&#xff09; 选择RCC时钟来源 选择时钟频率&#xff0c;配置为最高频率72MHZ 将单片机调试模式打开 SW模式 选择窗口一配置为异步通信模式 点击IO口设置页面&#xff0c;可以看到当前使用的串口一的引脚。如果想使用复用功能&#xff0c;只需…

MySQL之基本操作与用户授权

一 基本操作 1 SQL分类 数据库&#xff1a;database 表&#xff1a;table&#xff0c;行&#xff1a;row 列&#xff1a;column 索引&#xff1a;index 视图&#xff1a;view 存储过程&#xff1a;procedure 存储函数&#xff1a;function 触发器&#xff1a;trigger 事…

【JAVA】建立一个图书管理系统

在建立一个图书管理系统的时候我们首先需要构造一个书类 public class Book {private String name;private String author;private int price;private String type;private boolean isBorrwed;public Book(String name, String author, int price, String type) {this.name n…

【自我提升】计算机领域相关证书

目录 计算机技术与软件专业资格&#xff08;水平&#xff09;考试证书&#xff08;软考&#xff09;Oracle认证Cisco认证微软认证红帽认证AWS认证 计算机技术与软件专业资格&#xff08;水平&#xff09;考试证书&#xff08;软考&#xff09; 计算机技术与软件专业技术资格&a…

坚果N1S Pro和当贝X5 Pro哪款品质最高?当贝X5 Pro质价比更高

家用投影发展至今已经越来越卷&#xff0c;4K、激光等技术也经常被用在家用投影仪上&#xff0c;4K激光投影这类高端投影也出现了不少产品&#xff0c;其中被讨论最多的也是市面上销量比较好的&#xff0c;就是当贝X5 Pro和坚果N1S Pro这两款&#xff1b;很多人想知道这两台家用…

2024年大模型面试准备(三):聊一聊大模型的幻觉问题

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。 合集在这…
最新文章