java中的抽象类
抽象类是指包含了抽象方法的类。在java中,抽象方法指的是用abstract关键字进行修饰的方法,抽象方法与普通的方法的最大区别就是抽象方法没有方法体,也就是说抽象方法是没有具体的实现的。这也就意味着在抽象类的子类中调用抽象方法时,要想有具体的实现,就要对抽象方法进行重写,换而言之,抽象类中的抽象方法只是告诉它的子类必须要实现这样一个方法,具体怎么实现,抽象类并不做要求。
这个现象就好像,在家里母亲要做饭时发现没有酱油了,于是让你去买一瓶,但是却没有指定你要买什么牌子的酱油,也没有说要求你是到超市买,还是到小卖部买,甚至也没有要求你是走路去买还是开车去买,只是要求你必须要买到酱油而已。
在java中,抽象类和抽象方法都要用abstract关键字来修饰,这更像是一种属于抽象类的独有符号。抽象类和抽象方法在java中的语法结构为:
修饰符 abstract class 类名{
修饰符 abstract 返回值类型 方法名()
}
对于抽象方法的语法结构,可能会犯一个错误,那就是在小括号后面加上了大括号,这种书写方法是错误的,因为抽象方法没有方法体,当写上大括号后,方法就有了方法体,与抽象方法相违背,程序会报错,这点需要特别注意。
需要注意的是,当一个类成为抽象类的子类时,这个类中必须要实现抽象类中的抽象方法,如果没有实现这个抽象方法,那么程序会报错。也是因为这个原因,可以将抽象类中的抽象方法看作是一种规定,举个例子,学校严格要求学生在十点半之前必须睡觉,学生必须遵循这个规定,否则会被踢出学校,但是在这个规定之中,并没有规定学生具体要怎样睡觉。这个例子只是为了帮助更好的理解抽象类的概念,并没有特别的意思。
接下来,再编写一个java程序来演示抽象类的使用。这里定义一个抽象类Children,要求在这个类中,孩子必须进食,然后定义三个子类来继承这个抽象类,在这三个抽象类中实现这个抽象方法。下面的这个程序中,eat()方法为抽象方法,可以发现,抽象方法必须在子类中被实现,而且在抽象类中也可以拥有私有变量,这些私有变量的使用和普通类的使用是一样的。
package com.chouxiang.demo;/*** 定义一个抽象类,用来表示孩子门要吃饭*/
public abstract class Children {private String name;private int age;public abstract void eat();public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public int getAge() {return age;}
}class Child1 extends Children{String name;int age;public void eat(){System.out.println("第一个孩子"+this.name+","+age+"岁用勺子吃饭。");}
}
class Child2 extends Children {public void eat(){System.out.println("第二个孩子"+getName()+","+getAge()+"岁用筷子吃饭。");}}
class Child3 extends Children{String name;int age;public void eat(){System.out.println("第三个孩子"+this.name+","+age+"岁用刀叉吃饭。");}}
package com.chouxiang.demo;/*** 定义一个测试类,用来测试抽象类的实现*/
public class TestChildren {public static void main(String[] args) {Child1 ch1 = new Child1();ch1.name = "小明";ch1.age = 5;ch1.eat();Children ch2 = new Child2();ch2.setName("小章");ch2.setAge(10);ch2.eat();Child3 ch3 = new Child3();ch3.name = "Tom";ch3.age = 11;ch3.eat();}
}
相关文章:
java中的抽象类
抽象类是指包含了抽象方法的类。在java中,抽象方法指的是用abstract关键字进行修饰的方法,抽象方法与普通的方法的最大区别就是抽象方法没有方法体,也就是说抽象方法是没有具体的实现的。这也就意味着在抽象类的子类中调用抽象方法时…...
代码随想录算法训练营第二十天| 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
系列文章目录 目录 系列文章目录654.最大二叉树递归法[左闭右开)[左闭右闭] 617.合并二叉树递归法(前中后序都可,以前序为例)迭代法(类似 101. 对称二叉树 写法,可用双端队列/单端队列<栈>,以单端队列…...
2014年认证杯SPSSPRO杯数学建模A题(第二阶段)轮胎的花纹全过程文档及程序
2014年认证杯SPSSPRO杯数学建模 A题 轮胎的花纹 原题再现: 轮胎被广泛使用在多种陆地交通工具上。根据性能的需要,轮胎表面常会加工出不同形状的花纹。在设计轮胎时,往往要针对其使用环境,设计出相应的花纹形状。 第二阶段问…...
C#全新一代医院手术麻醉系统围术期全流程源码
目录 一、麻醉学科的起源 二、麻醉前访视与评估记录单 患者基本信息 临床诊断 患者重要器官功能及疾病情况 病人体格情况分级 手术麻醉风险评估 拟施麻醉方法及辅助措施 其他需要说明的情况 访视麻醉医师签名 访视时间 与麻醉相关的检查结果 三、手术麻醉信息系统…...
Python 神器:一键下载 M3U8 并转换为 MP4
在这个数字时代,我们经常在网页上遇到各种精彩的视频,但往往只能观看而无法下载。今天,我将向大家介绍如何使用 Python 自动下载网页中的 M3U8 链接,并将其转换为 MP4 格式,让你轻松保存喜欢的视频! 一、准…...
vue3全局控制Element plus所有组件的文字大小
项目框架vue-右上角有控制全文的文字大小 实现: 只能控制element组件的文字及输入框等大小变化,如果是自行添加div,text, span之类的控制不了。 配置流程 APP.vue 使用element的provide,包含app <el-config-provider :locale"loca…...
区间预测 | Matlab实现带有置信区间的BP神经网络时间序列未来趋势预测
区间预测 | Matlab实现带有置信区间的BP神经网络时间序列未来趋势预测 目录 区间预测 | Matlab实现带有置信区间的BP神经网络时间序列未来趋势预测预测效果基本介绍研究回顾程序设计参考资料预测效果 基本介绍 BP神经网络(Backpropagation neural network)是一种常用的人工神…...
Matlab中的脚本和函数
Matlab中的脚本和函数 文章目录 Matlab中的脚本和函数脚本创建脚本代码注释函数创建函数局部函数嵌套函数私有函数匿名函数补充知识函数句柄测试环境:Win11 + Matlab R2021a 脚本 Matlab脚本是最简单的程序文件类型。它们可用于自动执行一系列 Matlab 命令,如命令行重复执…...
使用 nohup java - jar 不输出nohup日志
使用 nohup 命令来运行 Java 程序,并且不让输出写入 nohup.out 文件,可以使用重定向操作符 > 将标准输出重定向到 /dev/null 文件中。这样可以将输出丢弃,而不会写入日志文件。下面是具体的命令: nohup java -jar your_progra…...
Linux系统中安装一些常用的插件备用
Linux系统中安装一些常用的插件备用 1.安装wget yum -y install wget 2.安装vim yum -y install vim-enhanced 3.更换yum源为国内的阿里云源(选择) 1、备份CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.…...
笔记本电脑上部署LLaMA-2中文模型
尝试在macbook上部署LLaMA-2的中文模型的详细过程。 (1)环境准备 MacBook Pro(M2 Max/32G); VMware Fusion Player 版本 13.5.1 (23298085); Ubuntu 22.04.2 LTS; 给linux虚拟机分配8*core CPU 16G RAM。 我这里用的是16bit的量化模型,…...
百度云加速方法「Cheat Engine」
加速网盘下载 相信经常玩游戏的小伙伴都知道「Cheat Engine」这款游戏内存修改器,它除了能对游戏进行内存扫描、调试、反汇编 之外,还能像变速齿轮那样进行本地加速。 这款专注游戏的修改器,被大神发现竟然还能加速百度网盘资源下载…...
SOC内部集成网络MAC外设+ PHY网络芯片方案:PHY芯片基础知识
一. 简介 本文简单了解一下 "SOC内部集成网络MAC外设 PHY网络芯片方案" 这个网络硬件方案中涉及的 PHY网络芯片的基础知识。 二. PHY芯片基础知识 PHY 是 IEEE 802.3 规定的一个标准模块。 1. IEEE规定了PHY芯片的前 16个寄存器功能是一样的 前面说了…...
openGauss 6.0.0-RC1 版本正式发布!
openGauss 6.0.0-RC1版本正式上线! openGauss 6.0.0-RC1是社区最新发布的创新版本,版本生命周期为0.5年。(创新版本命名:由原方案 XX.1.0 Preview (例:5.1.0 preview),调整为现方案 XX.0.0-RCx&…...
【JVM】关于JVM垃圾回收
文章目录 🌴死亡对象的判断算法🌸引用计数算法🌸可达性分析算法 🌳垃圾回收算法🌸标记-清除算法🌸复制算法🌸标记-整理算法🌸分代算法🌸哪些对象会进入新生代?…...
Unity照片墙简易圆形交互效果总结
还要很多可以优化的点地方,有兴趣的可以做 比如对象的销毁和生成可以做成对象池,走到最左边后再移动到最右边循环利用 分析过程文件,采用Blender,资源已上传,可以播放动画看效果,下面截个图: …...
Unity2018发布安卓报错 Exception: Gradle install not valid
Unity2018发布安卓报错 Exception: Gradle install not valid Exception: Gradle install not valid UnityEditor.Android.GradleWrapper.Run (System.String workingdir, System.String task, System.Action1[T] progress) (at <c67d1645d7ce4b76823a39080b82c1d1>:0) …...
蓝桥杯省赛刷题——题目 2656:刷题统计
刷题统计OJ链接:蓝桥杯2022年第十三届省赛真题-刷题统计 - C语言网 (dotcpp.com) 题目描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几…...
Python爬虫之异步爬虫
异步爬虫 一、协程的基本原理 1、案例 案例网站:https://www.httpbin.org/delay/5、这个服务器强制等待了5秒时间才返回响应 测试:用requests写一个遍历程序,遍历100次案例网站: import requests import logging import time…...
【Web】NSSCTF Round#20 Basic 个人wp
目录 前言 真亦假,假亦真 CSDN_To_PDF V1.2 前言 感谢17👴没让我爆零 真亦假,假亦真 直接getshell不行,那就一波信息搜集呗,先开dirsearch扫一下 扫的过程中先试试常规的robots.txt,www.zip,shell.phps,.git,.sv…...
NVIDIA aicr:AI容器运行时核心原理与生产部署指南
1. 项目概述:当AI遇见容器运行时如果你在AI开发或者高性能计算领域摸爬滚打过一段时间,大概率会遇到一个让人头疼的问题:如何高效、稳定地管理那些“胃口”巨大、依赖复杂的AI工作负载?从训练一个大型语言模型到运行一个实时的计算…...
【研报 A110】物理AI时代的具身数据采集需求研究:国家级训练场落地,开源生态加速建设
摘要:物理AI时代,具身智能与世界模型的发展,推动具身数据采集成为下一代数据基建的核心浪潮。具身大模型对数据有着EB级的海量需求,同时对多模态、异构性与质量要求极高,当前数据缺口成为制约具身智能发展的核心瓶颈&a…...
OpenClaw:让 AI 从 “对话” 走向 “实干” 的开源智能体
在人工智能技术快速发展的今天,大语言模型的对话能力已日趋成熟,但 “能说不能做” 的痛点始终制约着 AI 的实际应用价值。2026 年,一款名为 OpenClaw(社区昵称 “小龙虾 AI”)的开源项目迅速走红,它以 “真…...
别再乱用`return`了!深入理解Lua函数多返回值:`table.unpack`的妙用与尾调用优化
别再乱用return了!深入理解Lua函数多返回值:table.unpack的妙用与尾调用优化 在游戏开发中,我们经常需要处理复杂的技能系统。比如一个火球术可能同时返回伤害值、燃烧效果、目标列表等多个数据。新手开发者往往会写出这样的代码:…...
终极指南:如何使用qmcdump轻松解密QQ音乐加密音频文件
终极指南:如何使用qmcdump轻松解密QQ音乐加密音频文件 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否…...
论文AI率太高怎么救?答辩前1周降AI率完整攻略+不延期方案!
论文AI率太高怎么救?答辩前1周降AI率完整攻略不延期方案! 导师周一通知答辩、周五查出来知网 AIGC 检测 67%——这种倒计时场景每年 3-5 月毕业季都会上演几千次。 这种场景下选工具,最关键的不是「单价便宜」是「降不下来怎么办」。1 周时间…...
AD7606模块的20kHz高速采样怎么玩?深入对比带缓存与不带缓存的两种采集模式
AD7606模块20kHz高速采样的工程实践:带缓存与无缓存模式深度解析 在工业自动化、电力监测和振动分析等领域,多通道高速数据采集系统常面临一个关键抉择:如何在有限的处理器资源下实现最优的采样性能?AD7606作为一款经典的八通道16…...
Sora 2训练Pipeline为何突然兼容Gaussian Splatting?:逆向解析OpenAI最新隐式-显式混合表征专利(US20240177892A1)
更多请点击: https://intelliparadigm.com 第一章:Sora 2 Gaussian Splatting 技术融合背景 Sora 2 作为 OpenAI 推出的下一代视频生成模型,已深度集成高斯点绘(Gaussian Splatting)技术以提升动态场景的几何保真度…...
CentOS 7.9离线部署OnlyOffice踩坑全记录:从依赖包下载到SELinux配置的保姆级避坑指南
CentOS 7.9离线部署OnlyOffice全流程实战:从依赖包下载到SELinux配置的深度排错手册 在企业级生产环境中,离线部署文档协作平台往往面临比常规安装更复杂的挑战。本文将以CentOS 7.9为例,详细拆解OnlyOffice在完全离线环境下的部署全流程&…...
开源工具any2card:任意格式内容智能转换结构化卡片实战指南
1. 项目概述:从“任意格式”到“卡片”的智能转换革命最近在折腾个人知识库和内容管理时,我遇到了一个老生常谈但又无比棘手的问题:信息格式的碎片化。我的资料散落在各处,有PDF论文、网页文章、TXT笔记、甚至是一些图片里的文字。…...
