java基础 之 抽象类

news2024/12/27 16:05:39

文章目录

  • 前言
  • 抽象类
    • 浅浅的理解下抽象类
    • 关键字:abstract
    • 抽象类 VS 普通类
    • 特点

前言

1、类是一个模板,类被继承后成为父类,继承父类的类称为子类。
2、子类可以对父类的方法进行重写,也可以直接使用父类的方法。
3、类称为继承,关键字为extend;接口为实现,关键字为implement;

抽象类

浅浅的理解下抽象类

  • 如果我们想让父类就仅仅是个模板,但是不写他们的方法,让继承的子类来实现,这时候就引入了抽象类
    (有点枯燥哈,举个例子,植物大战僵尸)
    在这里插入图片描述

  • 如上三个植物(Plants), 其属性效果是不相同的(此处为了举例理解,谢绝较真~):

    • 【样式及动作:move】启动后的样式,不多说,均不同
    • 【花费:cost】 豌豆射手:100;向日葵:50;坚果:150;均不同
    • 【恢复:recovery】豌豆射手:10s;向日葵:20s;坚果:30s;
    • 【攻击:attack】豌豆射手:20点;向日葵:10;坚果:12;

    由上可以看出,我们需要一个父类Plants,用来说明需要的属性,但是每个子类需要实现的方法体是不一样的,例如move()方法中了,豌豆射手需要自己实现左右摇晃以及嘴巴吐豌豆的动作,而向日葵则需要实现规定时间生产阳光的动作~

    每个道具实现方法都不同,于是对于Plants,就定义move()、cost()、recovery()、attack()这几个方法:
    在这里插入图片描述

    然后Plants这个领导就说了,你们每个部门要根据自己实际情况来做这几件事,具体怎么做,就要需要你们各部门结合自己的特点来了,去做吧~
    于是,Plants领导就放权了,可是豌豆射手(Pea)、向日葵(SunFlower)和坚果(Nut)又怕把任务给漏了,咋整?没事每个任务都有abstract修饰,这样继承父类Plants后没有实现的任务会有提醒~
    开干吧~

关键字:abstract

  • 被abstract修饰的类叫抽象类
  • 被abstract修饰的方法叫抽象方法
  • 变量不能被abstract修饰

抽象类 VS 普通类

  • 1、抽象类必须有abstract关键字修饰,无abstract修饰的是普通类;
  • 2、抽象类中的抽象方法可以没有实现体;普通类的方法必须有实现体;
  • 3、抽象类被继承后,抽象方法必须重写;普通类继承后方法可以不用重写;
  • 4、抽象类不可以直接实例化(实例化需要借助多态);普通类可以实例化对象

特点

  • 1、抽象类为了把相同但是不确定的方法提出来,为了以后统一使用,并可以具有多种具体实现,目的是强制子类实现

    如豌豆射手、向日葵、坚果都需要去实现四个功能。整合在一起,不用特意去记忆都有哪些方法了

  • 2、抽象方法没有方法体,使用abstract关键字修饰
    在这里插入图片描述

  • 3、抽象类可以没有抽象方法,但是抽象方法必须在抽象类中,即普通方法不能有抽象类
    在这里插入图片描述
    在这里插入图片描述

  • 4、抽象类如果被继承,则其中的抽象方法必须要重写。抽象类也可以有普通方法,普通方法不用必须重写
    在这里插入图片描述

  • 5、抽象类不能实例化,但是可以有构造器。(有构造器的目的是子类实例化会调用父类的构造器)
    在这里插入图片描述

  • 6、抽象类可以使用多态,指向其子类对象(因为子类已经实现了抽象方法)

  • 7、抽象类中final和abstract不能同时在一个方法中使用。(final是禁止重写,abstract是必须重写,冲突)

  • 8、抽象类中,private和abstract不能同时在一个方法中使用。(private修饰的方法子类不可见,无法重写;abstract需要重写,冲突)

  • 9、抽象类中,static和abstract不能同时在一个方法中使用。(static修饰的方法是类级别的,abstract修饰的方法是对象层面的)

  • 10、子类继承抽象类后,必须要重写抽象类中所有抽象的方法。如果不想实现抽象类中的所有抽象方法,那么该子类可以是抽象类
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙笔记--WorkerTaskPool

这一节了解一下鸿蒙中的Worker和TaskPool,Worker和TaskPool的作用是为应用程序提供一个多线程的运行环境,用于处理耗时的计算任务或其他密集型任务。可以有效地避免这些任务阻塞主线程,从而最大化系统的利用率,降低整体资源消耗,并…

python动画:manim中的颜色【ManimColor】的使用方法

一,什么是彩色(颜色) Color是视觉艺术不可或缺的一部分,但我们怎么知道它如此重要呢?嗯,一种方法是通过色彩理论的应用。什么是色彩理论?我们将定义色彩理论,然后分解来自绘画、照片和电影的各种色彩理论示…

活动预告 | Global RAG Hack Together Ⅲ-用VS Code AI Tools结合SLM构建RAG应用

点击蓝字 关注我们 编辑:Alan Wang 排版:Rani Sun 九月,Global RAG Hack Together 即将在全球开启,在这场全球 RAG 黑客松中,我们不仅可以学习到生成式 AI 下的 RAG 技术,还可以用我们掌握的 RAG 技术提交参…

python读取calibre的opf文件到表格

opf文件之一: python 将 Calibre Library 里面所有opf文件的title,creator,date,description,language,subject内容写入表格中,其中opf之一如上,表头对应为:标题&#xf…

豆包大模型升级:日均Tokens使用量破5000亿,字节跳动打造即刻体验的《Her》式AI

ChatGPT 发布近两年后,全球掀起了一场大模型竞赛,如今怎么将大模型落地,成为萦绕在每一家 AI 公司的最大命题。 最近有媒体统计,自从 GPT-3.5 上线以来,中国新成立的 AI 公司已经有近 8 万家陷入注销、吊销或停业异常…

【前端】vue数据监测原理

问题展示: 点击按钮之后,vue中的persons数据改变,但是页面显示的内容没变。(先点击按钮再打开vue的数据面板可以看见改变,先打开后点击数据面板也不能显示改变。) 此时的更新代码: methods:{…

AI副业:别只顾刷黑神话悟空!AI做神话账号,商单月入过万(附教程)

前言 国产3A大作《黑神话:悟空》一经发布,瞬间登顶steam榜首,打破单机游戏在线记录,全球几十万国外玩家听着中文配音,看着翻译过来的英文字幕,玩的不亦乐乎! 甚至国外论坛上兴起了一股西游风&a…

eBest AI 大模型:智能化引领快消新未来

在快消品行业的高速变化中,数据与知识的管理、分析和应用变得至关重要。面对着日益增长的市场需求和顾客个性化的体验期望,如何利用技术提升效率、增强客户互动和优化销售策略?eBest GPT Hub,一个专为快消行业打造的AI大模型平台&…

第二节:Nodify 添加节点到编辑器中

引言 上节说到Nodify有三层结构,编辑器Editor,节点Node和连接组件Connection,下面就让我们来进行第一步尝试,在编辑器中添加一个节点。 在窗口中添加nodify命名空间,并添加控件。 xmlns:nodify"https://miroiu.…

docker 多线成服务,比如gunicorn服务启动报错解决办法

docker执行的时候报错,排查是线程创建权限不足导致的,报错如下。 解决办法 docker run -e OPENBLAS_NUM_THREADS1 your_image

淘宝商品评论API:评价内容中的关键词搜索与筛选

淘宝商品评论API为开发者提供了强大的工具,用于获取淘宝商品的评论信息,包括评价内容、评论评分、评论时间等。在评价内容中进行关键词搜索与筛选,是电商数据分析、用户行为研究以及商品质量监控等场景下的重要需求。以下是对这一过程的详细解…

EasyCVR视频汇聚平台革新播放体验:WebRTC协议赋能H.265视频流畅传输

随着科技的飞速发展和网络技术的不断革新,视频监控已经广泛应用于社会各个领域,成为现代安全管理的重要组成部分。在视频监控领域,视频编码技术的选择尤为重要,它不仅关系到视频的质量,还直接影响到视频的传输效率和兼…

智领云开源KDP:深度剖析其与主流数据平台的性能与特性对比

本文由智领云 LeetTools 工具自动生成 申请试用: https://www.leettools.com/feedback/ 在当今快速发展的技术环境中,数据平台的选择对企业的数字化转型和业务发展至关重要。本文将重点分析智领云开源KDP与其他数据平台的比较,探讨其在大数据…

[000-01-022].第03节:RabbitMQ环境搭建

我的后端学习大纲 RabbitMQ学习大纲 1.rpm包方式搭建: 1.1.搭建RabbitMQ单体架构: 1.MQ下载地址2.这里是提前下载好后上传安装包到服务器得opt目录下: 3.安装MQ需要先有Erlang语言环境,安装文件的Linux命令(分别按照以下顺序安装…

【多线程基础】Java线程的六种状态

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:Java多线程 📚本系列文章为个人…

重生奇迹MU 冲锋在前近战职业

刀光剑影,近战搏杀的乐趣是热爱近战职业的玩家享受最强体验。重生奇迹MU中有很多近战职业,每个职业都拥有独特的技能和玩法,在战斗中表现也各不相同。选择近战职业的玩家都是英勇者,敢于冲锋陷阵,迎击敌人,…

【CSP:202303-2】垦田计划(Java)

题目链接 202303-2 垦田计划 题目描述 求解思路 直接模拟:创建一个数组arr[],a[i]用来记录将第i天缩短所需要的资源数。在读取数据的时候直接对数组进行初始化。maxTime表示资源优化之前需要花费的最大天数。需要注意:在进行优化遍历时&am…

秋招力扣Hot100刷题总结——滑动窗口

1. 无重复字符的最长子串(手撕频率非常高) 题目要求:给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 代码及思路 使用一个hashmap维护已经出现过的字符遍历字符串,当字符已经存在时,根…

微服务实战系列之玩转Docker(十二)

前言 山一程,水一程,身向榆关那畔行,夜深千帐灯。——清纳兰性德 最近偶读纳兰的《长相思》经典之作,被这个“行军”场面震撼了。长长的队伍,跋山涉水,野宿一处。夜深人静的时候,突然激发了纳兰…

CSS3页面布局-三栏-固定宽度布局

布局的基本概念 多栏布局三种基本实现方案:固定宽度,流动,弹性。 固定宽度布局:大小不会随用户调整浏览器窗口大小。 一版960-1100,960常见,可以被3,4,5,6,8,10,12,16整除。 流动布局:大小会随用户调整…