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

JAVA—实验3 继承与多态

一、实验目的
1.掌握类的继承机制
2.掌握抽象类的定义方法
2.熟悉类中成员变量和方法的访问控制
3.熟悉成员方法或构造方法的多态性
二、实验内容

1. Circle类及其子类

【问题描述】
实现类Circle,半径为整型私有数据成员
1)构造方法:参数为半径(整型数据)。
2)成员方法:标准方法;计算周长的方法、计算面积的方法;toString()方法返回将半径、周长和面积连接的长字符串。
派生类Circle获得圆柱体类,要求:
1)添加属性成员圆柱的高(整型数据)。
2)添加标准方法、构造方法、计算圆柱体体积的方法。
定义测试类,输入半径和高,分别实例化Circle类和圆柱体类,按要求输出圆和圆柱体的信息。结果保留2位小数
【输入形式】
两行,第一行为圆类对象的半径,第二行为圆柱体类对象的半径和高
【输出形式】
两行,第一行输出圆类对象的相关信息,第二行输出圆柱体对象的相关信息
在这里插入图片描述

运行结果:

在这里插入图片描述

源码:

package circle1;import java.text.DecimalFormat;
import java.util.Scanner;public class Circle1 {public static void main(String[] args) {// TODO Auto-generated method stubScanner in = new Scanner(System.in);int rad = in.nextInt();Cir1 a1 = new Cir1(rad);a1.show();int c = in.nextInt();int h = in.nextInt();Vol a2 = new Vol(c, h);a2.show();in.close();}
}class Cir1 {private int rad;DecimalFormat df = new DecimalFormat("#.00");public double perimeter() {return Math.PI * 2 * rad;}public double area() {return rad * rad * Math.PI;}public String toString() {return "radius=" + rad + " perimeter=" + df.format(perimeter()) + " area=" + df.format(area());}public void show() {System.out.println(toString());}public Cir1(int rad) {this.rad = rad;}
}class Vol extends Cir1 {private int h;public Vol(int rad, int h) {super(rad);this.h = h;}public double volume(int h) {return area() * h;}public String toString() {return  super.toString()+" volume=" + df.format(volume(h));}public void show() {System.out.printf(toString());}}

2.抽象类Shape

【问题描述】
定义抽象类Shape,圆形Circle、Rectangle为子类。
Shape类有一个数据成员(double型),定义带参构造方法、抽象方法calArea()(返回值类型:double)
在Circle、Square两个类中,实现calArea()方法。
在Rectangle类中,增加一个数据成员(double型),实现calArea()方法。
编写测试类:定义一个Shape类引用shape,分别指向一个Circle类、Rectangle类对象,利用多态,计算各平面图形的面积并输出。(结果保留2位小数)
要求:
1.数据成员全部为私有成员;
2.数据从键盘输入,调用带参构造方法创建子类对象。
提示:使用Math类的PI
【输入形式】两行:分别是为圆的半径、长方形的长和宽
【输出形式】两种平面图形的面积
在这里插入图片描述

运行结果:

在这里插入图片描述

源码:

package area;import java.text.DecimalFormat;
import java.util.Scanner;public class Area {public static void main(String[] args) {DecimalFormat df = new DecimalFormat("#.00");// TODO Auto-generated method stubScanner in = new Scanner(System.in);double a1 = in.nextDouble();Shape x1 = new Circle(a1);System.out.println(df.format(x1.calArea()));double a2 = in.nextDouble();double a3 = in.nextDouble();Shape x2 = new Rectangle(a2,a3);System.out.printf(df.format(x2.calArea()));in.close();}}
abstract class Shape{protected double rad;public Shape(double rad) {this.rad = rad;}abstract public double calArea();
}
class Circle extends Shape{public Circle(double rad) {super(rad);}public double calArea() {return Math.PI*rad*rad;}
}
class Rectangle extends Shape{private double k;public Rectangle(double c ,double k) {super(c);this.k = k;}public double calArea() {return rad*k;}
}

3. 抽象类-员工类

【问题描述】
编写抽象类-员工类,有姓名、工号(int型)、基本工资(double型)属性,计算工资为抽象方法,由员工类派生出教师、实验员和行政人员三个类。教师有课酬标准(整型,元/小时)和月课时(整型),月工资=基本工资+课酬标准月课时;实验员有月在岗小时(整型),月工资=基本工资+50每月在岗小时;行政人员有岗贴(double型),月工资=基本工资+岗贴。请编写各类定义,并编写测试类(主动类),在主动类中定义一个打印方法,形参为员工类引用,在主方法中分别创建三个对象,调用打印方法,根据不同的实参打印出不同类对象的信息。
【输入形式】
三行,第一行为教师信息,第二行为实验员信息,第三行为行政人员信息
【输出形式】
三类人员的相关信息
在这里插入图片描述

运行结果:

在这里插入图片描述

源码:

package person_inform;import java.util.Scanner;public class Person_Inform {public static void main(String[] args) {// TODO Auto-generated method stubScanner in = new Scanner(System.in);String name = in.next();int empNo = in.nextInt();double baseSalary = in.nextDouble();int hourlyFee = in.nextInt();int monthlyHour = in.nextInt();String name1 = in.next();int empNo1 = in.nextInt();double baseSalary1 = in.nextDouble();double monthlyHour1= in.nextDouble();String name2 = in.next();int empNo2 = in.nextInt();double baseSalary2 = in.nextDouble();double allowance = in.nextDouble();System.out.println("teacher:");Pers t = new Teacher(name, empNo, baseSalary, hourlyFee, monthlyHour);System.out.println(t.toString());System.out.println("lab worker:");Pers l = new lab_Worker(name1, empNo1, baseSalary1, monthlyHour1);System.out.println(l.toString());System.out.println("staff:");Pers s = new Staff(name2, empNo2, baseSalary2, allowance);System.out.println(s.toString());in.close();}}abstract class Pers {private String name;private int empNo;protected double baseSalary;public Pers(String name, int empNo, double baseSalary) {this.name = name;this.empNo = empNo;this.baseSalary = baseSalary;}abstract public double salary();public String toString() {return "name:" + name + "\n" + "empNo:" + empNo + "\n" + "baseSalary:"+ baseSalary;}}class Teacher extends Pers {private int hourlyFee;private int monthlyHour;public Teacher(String name, int empNo, double baseSalary, int hourlyFee, int monthlyHour) {super(name, empNo, baseSalary);this.hourlyFee = hourlyFee;this.monthlyHour = monthlyHour;}public double salary() {return baseSalary + hourlyFee * monthlyHour;}public String toString() {return super.toString()+"\n"+"hourlyFee:"+hourlyFee+"\n"+"monthlyHour:"+monthlyHour+"\n"+"salary:"+salary()+"\n";}}class lab_Worker extends Pers {private int monthlyHour;public lab_Worker(String name, int empNo, double baseSalary, int monthlyHour) {super(name, empNo, baseSalary);this.monthlyHour= monthlyHour;}public double salary() {return baseSalary + monthlyHour* 50;}public String toString() {return super.toString()+"\n"+"monthlyHour:"+monthlyHour+"\n"+"salary:"+salary()+"\n";}}class Staff extends Pers {private double allowance;public Staff(String name, int empNo, double baseSalary, double allowance) {super(name, empNo, baseSalary);this.allowance = allowance;}public double salary() {return baseSalary + allowance;}public String toString() {return super.toString()+"\n"+"allowance:"+allowance+"\n"+"salary:"+salary()+"\n";}
}

END:熬夜也要敲完,这是一场发际线与手速的竞争。

相关文章:

JAVA—实验3 继承与多态

一、实验目的 1.掌握类的继承机制 2.掌握抽象类的定义方法 2.熟悉类中成员变量和方法的访问控制 3.熟悉成员方法或构造方法的多态性 二、实验内容 1. Circle类及其子类 【问题描述】 实现类Circle,半径为整型私有数据成员 1)构造方法:参数为…...

TCP协议和相关特性

1.TCP协议的报文结构 TCP的全称为:Transmission Control Protocol。 特点: 有连接可靠传输面向字节流全双工 下面是TCP的报文结构: 源端口和目的端口: 源端口表示数据从哪个端口传输出来,目的端口表示数据传输到哪个端口去。…...

【SpringCloud组件——Eureka】

前置准备: 分别提供订单系统(OrderService)和用户系统(UserService)。订单系统主要负责订单相关信息的处理,用户系统主要负责用户相关信息的处理。 一、微服务当中的提供者和消费者 1.1、概念 服务提供…...

JVM面试题(一)

JVM内存分哪几个区,每个区的作用是什么? java虚拟机主要分为以下几个区: JVM中方法区和堆空间是线程共享的,而虚拟机栈、本地方法栈、程序计数器是线程独享的。 (1)方法区: a. 有时候也成为永久代,在该区内…...

c# 无损压缩照片大小,并且设计了界面,添加了外部Ookii.Dialogs.dll,不一样的选择文件夹界面,并且可以把外部dll打包进exe中

c# 无损压缩照片大小,并且设计了界面,添加了外部Ookii.Dialogs.dll,不一样的选择文件夹界面,并且可以把外部dll打包进exe中 using System; using System.Collections; using System.Collections.Generic; using System.ComponentM…...

《统计学习方法》——隐马尔可夫模型(上)

引言 这是《统计学习方法》第二版的读书笔记,由于包含书上所有公式的推导和大量的图示,因此文章较长,正文分成三篇,以及课后习题解答,在习题解答中用Numpy实现了维特比算法和前向后向算法。 《统计学习方法》——隐马…...

ElasticSearch删除索引【真实案例】

文章目录 背景分析解决遇到的问题 - 删除超时报错信息解决办法1:调大超时时间解决办法2:调大ES堆内存参考背景 项目中使用了ELK技术栈实现了日志管理,但是日志管理功能目前并没有在生产上实际使用。 但ELK程序依然在运行,导致系统磁盘发生告警,剩余可用磁盘不足10%。 所以…...

基于FPGA+JESD204B 时钟双通道 6.4GSPS 高速数据采集设计(三)连续多段触发存储及传输逻辑设计

本章将完成数据速率为 80MHz 、位宽为 12bits 的 80 路并行采样数据的连续多 段触发存储。首先,给出数据触发存储的整体框架及功能模块划分。然后,简介 MIG 用户接口、设置及读写时序。最后,进行数据跨时钟域模块设计,内存…...

对 Iterator, Generator 的理解?

Iterator Iterator是最简单最好理解的。 简单的说,我们常用的 for of 循环,都是通过调用被循环对象的一个特殊函数 Iterator 来实现的,但是以前这个函数是隐藏的我们无法访问, 从 Symbol 引入之后,我们就可以通过 Sy…...

C++基础

文章目录 C命名空间定义命名空间using指令不连续的命名空间嵌套的命名空间 面向对象类类成员的访问权限及类的封装对象类成员函数类访问修饰符构造函数和析构函数类的构造函数带参数的构造函数使用初始化列表来初始化字段类的析构函数拷贝构造函数 友元函数内联函数this指针指向…...

软件测试全流程

软件测试全流程 一、制定测试策略二、制定测试方案三、编辑测试用例四、执行测试用例五、输出问题单六、回归测试七、测试文件归档 一、制定测试策略 1、测试目的测试范围 2、用什么测试方法工具(例如功能测试用黑盒测试) 3、测试优先级(功能…...

【软件测试】支付模块测试攻略,这些测试方法和注意事项你掌握了么?

对于大部分人而言,支付模块或许是日常生活中最为关注和使用的功能之一,因此,对于支付模块的质量控制也显得尤为重要。 但考虑到支付涉及到金钱流转等敏感信息,一旦出现问题可能带来非常严重后果。因此,在支付模块测试…...

刷完这个笔记,17K不能再少了....

大家好,最近有不少小伙伴在后台留言,得准备面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到理想…...

知识变现创业指南-《知识变现秘籍》

《知识变现秘籍》 知识变现创业者指南 读完将改变你的认知 开阔你的知识变现思路 系统掌握知识变现的要点 知识付费创业方法 帮你利用知识赚到你弟一桶金 如果你有一技之长,想变现 如果你有一身才华,想变现 如果你在某个领域有绝活 如果你是&am…...

springboot+java博物馆文物管理系统

用户前台进入系统可以进行首页、文物信息、论坛交流、文物资讯、留言反馈、我的、跳转到后台等springboot是基于spring的快速开发框架, 相比于原生的spring而言, 它通过大量的java config来避免了大量的xml文件, 只需要简单的生成器便能生成一个可以运行的javaweb项目, 是目前最…...

Ansible 自动化运维工具(二)——Ansible 的脚本(playbook 剧本)

Ansible 自动化运维工具—Ansible 的脚本playbook 剧本 playbooks 概述以及实例操作playbooks 的组成操作示例一:编写yaml文件也就是playbook修改配置文件并放入/opt/目录下运行playbook 操作实例二:定义、引用变量操作示例三:指定远程主机su…...

阿里云镜像服务下载并安装Go环境

【阿里云镜像】下载并安装Go环境 一、参考链接 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com) golang镜像-golang下载地址-golang安装教程-阿里巴巴开源镜像站 (aliyun.com) GO语言安装以及国内镜像 - DbWong_0918 - 博客园 (cnblogs.com) 二、Go介绍 Gol…...

工作线程快速优雅退出方式探讨

本文我们不用定时器。定时器会阻塞消息循环。先看需求: 我们先看第一种,有一个任务,要求每1秒钟执行一次,最常见的写法如下两种 bool bExitThread false; DWORD WorkThread1(LPVOID param) {while (false bExitThread){//// to…...

甘特图控件DHTMLX Gantt教程:用PHP:Laravel实现Gantt(上)

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求,具备完善的甘特图图表库,功能强大,价格便宜,提供丰富而灵活的JavaScript API接口,与各种服务器端技术&am…...

ffmpeg-命令大全03

ffplay/mpv 查看所有的解码器 ffplay -decoders >>decoders.txt ffplay无延时无缓存播放 ffplay -fflags nobuffer -i "%1" ffplay指定size播放 ffplay -x 480 -y 270 -i "%1" ffplay指定解码器 ffplay -vcodec hevc_cuvid "%1" […...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...

StarRocks 全面向量化执行引擎深度解析

StarRocks 全面向量化执行引擎深度解析 StarRocks 的向量化执行引擎是其高性能的核心设计,相比传统行式处理引擎(如MySQL),性能可提升 5-10倍。以下是分层拆解: 1. 向量化 vs 传统行式处理 维度行式处理向量化处理数…...

接口 RESTful 中的超媒体:REST 架构的灵魂驱动

在 RESTful 架构中,** 超媒体(Hypermedia)** 是一个核心概念,它体现了 REST 的 “表述性状态转移(Representational State Transfer)” 的本质,也是区分 “真 RESTful API” 与 “伪 RESTful AP…...

02-性能方案设计

需求分析与测试设计 根据具体的性能测试需求,确定测试类型,以及压测的模块(web/mysql/redis/系统整体)前期要与相关人员充分沟通,初步确定压测方案及具体的性能指标QA完成性能测试设计后,需产出测试方案文档发送邮件到项目组&…...

第2课 SiC MOSFET与 Si IGBT 静态特性对比

2.1 输出特性对比 2.2 转移特性对比 2.1 输出特性对比 器件的输出特性描述了当温度和栅源电压(栅射电压)为某一具体数值时,漏极电流(集电极电流...

SDU棋界精灵——硬件程序ESP32实现opus编码

一、 ​​音频处理框架​ 该项目基于Espressif的音频处理框架构建,核心组件包括 ESP-ADF 和 ESP-SR,以下是完整的音频处理框架实现细节: 1.核心组件 (1) 音频前端处理 (AFE - Audio Front-End) ​​main/components/audio_pipeline/afe_processor.c​​功能​​: 声学回声…...

智能照明系统:具备认知能力的“光神经网络”

智能照明系统是物联网技术与传统照明深度融合的产物,其本质是通过感知环境、解析需求、自主决策的闭环控制,重构光与人、空间、环境的关系。这一系统由智能光源、多维传感器、边缘计算单元及云端管理平台构成,形成具备认知能力的“光神经网络…...