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

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关键字进行修饰的方法,抽象方法与普通的方法的最大区别就是抽象方法没有方法体,也就是说抽象方法是没有具体的实现的。这也就意味着在抽象类的子类中调用抽象方法时&#xf…...

代码随想录算法训练营第二十天| 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

系列文章目录 目录 系列文章目录654.最大二叉树递归法[左闭右开)[左闭右闭] 617.合并二叉树递归法&#xff08;前中后序都可&#xff0c;以前序为例&#xff09;迭代法&#xff08;类似 101. 对称二叉树 写法&#xff0c;可用双端队列/单端队列<栈>&#xff0c;以单端队列…...

2014年认证杯SPSSPRO杯数学建模A题(第二阶段)轮胎的花纹全过程文档及程序

2014年认证杯SPSSPRO杯数学建模 A题 轮胎的花纹 原题再现&#xff1a; 轮胎被广泛使用在多种陆地交通工具上。根据性能的需要&#xff0c;轮胎表面常会加工出不同形状的花纹。在设计轮胎时&#xff0c;往往要针对其使用环境&#xff0c;设计出相应的花纹形状。   第二阶段问…...

C#全新一代医院手术麻醉系统围术期全流程源码

目录 一、麻醉学科的起源 二、麻醉前访视与评估记录单 患者基本信息 临床诊断 患者重要器官功能及疾病情况 病人体格情况分级 手术麻醉风险评估 拟施麻醉方法及辅助措施 其他需要说明的情况 访视麻醉医师签名 访视时间 与麻醉相关的检查结果 三、手术麻醉信息系统…...

Python 神器:一键下载 M3U8 并转换为 MP4

在这个数字时代&#xff0c;我们经常在网页上遇到各种精彩的视频&#xff0c;但往往只能观看而无法下载。今天&#xff0c;我将向大家介绍如何使用 Python 自动下载网页中的 M3U8 链接&#xff0c;并将其转换为 MP4 格式&#xff0c;让你轻松保存喜欢的视频&#xff01; 一、准…...

vue3全局控制Element plus所有组件的文字大小

项目框架vue-右上角有控制全文的文字大小 实现&#xff1a; 只能控制element组件的文字及输入框等大小变化&#xff0c;如果是自行添加div,text, span之类的控制不了。 配置流程 APP.vue 使用element的provide&#xff0c;包含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 程序&#xff0c;并且不让输出写入 nohup.out 文件&#xff0c;可以使用重定向操作符 > 将标准输出重定向到 /dev/null 文件中。这样可以将输出丢弃&#xff0c;而不会写入日志文件。下面是具体的命令&#xff1a; nohup java -jar your_progra…...

Linux系统中安装一些常用的插件备用

Linux系统中安装一些常用的插件备用 1.安装wget yum -y install wget 2.安装vim yum -y install vim-enhanced 3.更换yum源为国内的阿里云源&#xff08;选择&#xff09; 1、备份CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.…...

笔记本电脑上部署LLaMA-2中文模型

尝试在macbook上部署LLaMA-2的中文模型的详细过程。 &#xff08;1&#xff09;环境准备 MacBook Pro(M2 Max/32G); VMware Fusion Player 版本 13.5.1 (23298085); Ubuntu 22.04.2 LTS; 给linux虚拟机分配8*core CPU 16G RAM。 我这里用的是16bit的量化模型&#xff0c;…...

百度云加速方法「Cheat Engine」

加速网盘下载 相信经常玩游戏的小伙伴都知道「Cheat Engine」这款游戏内存修改器&#xff0c;它除了能对游戏进行内存扫描、调试、反汇编 之外&#xff0c;还能像变速齿轮那样进行本地加速。 这款专注游戏的修改器&#xff0c;被大神发现竟然还能加速百度网盘资源下载&#xf…...

SOC内部集成网络MAC外设+ PHY网络芯片方案:PHY芯片基础知识

一. 简介 本文简单了解一下 "SOC内部集成网络MAC外设 PHY网络芯片方案" 这个网络硬件方案中涉及的 PHY网络芯片的基础知识。 二. PHY芯片基础知识 PHY 是 IEEE 802.3 规定的一个标准模块。 1. IEEE规定了PHY芯片的前 16个寄存器功能是一样的 前面说了&#xf…...

openGauss 6.0.0-RC1 版本正式发布!

openGauss 6.0.0-RC1版本正式上线&#xff01; openGauss 6.0.0-RC1是社区最新发布的创新版本&#xff0c;版本生命周期为0.5年。&#xff08;创新版本命名&#xff1a;由原方案 XX.1.0 Preview (例&#xff1a;5.1.0 preview&#xff09;&#xff0c;调整为现方案 XX.0.0-RCx&…...

【JVM】关于JVM垃圾回收

文章目录 &#x1f334;死亡对象的判断算法&#x1f338;引用计数算法&#x1f338;可达性分析算法 &#x1f333;垃圾回收算法&#x1f338;标记-清除算法&#x1f338;复制算法&#x1f338;标记-整理算法&#x1f338;分代算法&#x1f338;哪些对象会进入新生代&#xff1f…...

Unity照片墙简易圆形交互效果总结

还要很多可以优化的点地方&#xff0c;有兴趣的可以做 比如对象的销毁和生成可以做成对象池&#xff0c;走到最左边后再移动到最右边循环利用 分析过程文件&#xff0c;采用Blender&#xff0c;资源已上传&#xff0c;可以播放动画看效果&#xff0c;下面截个图&#xff1a; …...

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链接&#xff1a;蓝桥杯2022年第十三届省赛真题-刷题统计 - C语言网 (dotcpp.com) 题目描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目&#xff0c;周六和周日每天做 b 道题目。请你帮小明计算&#xff0c;按照计划他将在第几…...

Python爬虫之异步爬虫

异步爬虫 一、协程的基本原理 1、案例 案例网站&#xff1a;https://www.httpbin.org/delay/5、这个服务器强制等待了5秒时间才返回响应 测试&#xff1a;用requests写一个遍历程序&#xff0c;遍历100次案例网站&#xff1a; import requests import logging import time…...

【Web】NSSCTF Round#20 Basic 个人wp

目录 前言 真亦假&#xff0c;假亦真 CSDN_To_PDF V1.2 前言 感谢17&#x1f474;没让我爆零 真亦假&#xff0c;假亦真 直接getshell不行&#xff0c;那就一波信息搜集呗&#xff0c;先开dirsearch扫一下 扫的过程中先试试常规的robots.txt,www.zip,shell.phps,.git,.sv…...

利用OFA-Image-Caption自动生成Latex论文图表标题与描述

利用OFA-Image-Caption自动生成Latex论文图表标题与描述 写论文最烦人的步骤是什么&#xff1f;对我而言&#xff0c;除了反复修改格式&#xff0c;就是给那一大堆图表想标题和写描述了。一张图&#xff0c;你得想个既准确又简洁的标题&#xff0c;还得在正文里引用它&#xf…...

MATLAB图像处理实战:用imfindcircles快速定位硬币边缘(附完整代码)

MATLAB图像处理实战&#xff1a;用imfindcircles快速定位硬币边缘&#xff08;附完整代码&#xff09; 在工业检测和医学影像分析中&#xff0c;圆形物体的精准定位往往是关键的第一步。无论是生产线上的硬币质量检查&#xff0c;还是显微镜下的细胞计数&#xff0c;快速准确地…...

Qwen3-0.6B-FP8惊艳效果:Qwen3-0.6B-FP8在中文法律条文理解任务中表现优异

Qwen3-0.6B-FP8惊艳效果&#xff1a;在中文法律条文理解任务中表现优异 最近&#xff0c;我在测试一个非常有意思的模型——Qwen3-0.6B-FP8。你可能听说过各种大模型&#xff0c;但这个模型有点特别&#xff0c;它是个“小个子”&#xff0c;却想在“大任务”上证明自己。我把…...

swoole方案 WebSocket 下推消息优先级队列

WebSocket 推消息优先级队列 大白话先说清楚 普通弹幕&#xff1a; "哈哈哈哈哈" 优先级 1 (低) 礼物打赏&#xff1a; "送了火箭&#xff01;" 优先级 2 (中) 系统广播&#xff1a; "服务器维护通知" 优先级 3 (高)队列里同…...

致开发者:别再重复造轮子,这个开源商城系统让你把时间花在刀刃上

作为开发者&#xff0c;你是否厌倦了每次新项目都要从零搭建电商后台&#xff1f;商品、订单、会员、营销……这些基础模块耗费了你多少宝贵的创造力&#xff1f;今天&#xff0c;我们想和你聊聊一个能让你“拿来即用&#xff0c;改也不难”的解决方案——CRMEB开源商城系统。它…...

SolidWorks2021设计库隐藏技巧:如何自定义Toolbox标准件库满足企业需求

SolidWorks 2021企业级Toolbox深度定制&#xff1a;打造标准化设计引擎 在企业级机械设计环境中&#xff0c;标准化程度直接决定了团队协作效率和设计质量。SolidWorks 2021的Toolbox功能远不止是一个标准件库&#xff0c;当经过深度定制后&#xff0c;它能成为企业设计流程的中…...

企业邮箱安全必看:SPF、DKIM、DMARC 三件套配置实战(附常见错误排查)

企业邮箱安全必看&#xff1a;SPF、DKIM、DMARC 三件套配置实战&#xff08;附常见错误排查&#xff09; 当一封伪造CEO签名的钓鱼邮件成功进入财务部门邮箱时&#xff0c;企业面临的不仅是数据泄露风险——根据Verizon《2023年数据泄露调查报告》&#xff0c;83%的商务邮件入侵…...

24小时运行验证:OpenClaw+ollama-QwQ-32B自动化监控脚本稳定性测试

24小时运行验证&#xff1a;OpenClawollama-QwQ-32B自动化监控脚本稳定性测试 1. 项目背景与目标设定 去年冬天的一个深夜&#xff0c;我被手机警报惊醒——某个关键商品的价格突然跌破了我的心理预期。手忙脚乱登录电商平台时&#xff0c;优惠早已结束。这次经历让我意识到&…...

SWF逆向工程工作流优化:JPEXS Free Flash Decompiler效率提升技巧

SWF逆向工程工作流优化&#xff1a;JPEXS Free Flash Decompiler效率提升技巧 【免费下载链接】jpexs-decompiler JPEXS Free Flash Decompiler 项目地址: https://gitcode.com/gh_mirrors/jp/jpexs-decompiler JPEXS Free Flash Decompiler&#xff08;简称FFDec&#…...

Sqoop性能调优之 --fetch-size:小参数,大作用

Sqoop性能调优之 --fetch-size&#xff1a;小参数&#xff0c;大作用1. 引言&#xff1a;被忽视的"隐形冠军"2. 什么是 --fetch-size&#xff1f;2.1 基本定义2.2 核心作用3. 底层原理&#xff1a;从逐行到批量3.1 没有 --fetch-size 的情况&#xff08;逐行读取&…...