Java期末复习题之抽象类、接口

news2024/11/20 10:39:08

点击返回标题->23年Java期末复习-CSDN博客


第1题.

首先设计一个学生抽象类Student,其数据成员有name(姓名)、age(年龄)和degree(学位),以及一个抽象方法show()。然后由Student类派生出本科生类Undergraduate和研究生类Graduate,本科生类Undergraduate增加成员specialty(专业),研究生类增加成员direction(研究方向)。并且每个类都有show()方法,用于输出数据成员信息。请定义对象,并打印输出下列信息:

public class Main {
    public static void main(String[] args) {
    	Undergraduate u1 = new Undergraduate("张三", 20, "本科", "计算机科学");
    	Undergraduate u2 = new Undergraduate("李四", 21, "本科", "物联网");
    	Graduate g1 = new Graduate("王五", 25, "硕士", "软件工程");
    	Graduate g2 = new Graduate("刘六", 36, "博士", "通信工程");
    	u1.show();
    	u2.show();
    	g1.show();
    	g2.show();
    }
}
abstract class Student{
	String name, degree;
	int age;
	abstract void show();//定义为抽象方法,Student也必须为抽象类
}
class Undergraduate extends Student{
	String specialty;

	Undergraduate(String name, int age, String degree, String specialty){//有参构造
		this.name = name;
		this.age = age;
		this.degree = degree;
		this.specialty = specialty;
	}
	@Override
	void show() {//实现父类抽象方法
		//格式化输出建议使用printf
		System.out.printf("%s:%d,%s,%s\n", 
				this.name, this.age, this.degree, this.specialty);
	}
}
class Graduate extends Student{
	String direction;
	
	Graduate(String name, int age, String degree, String direction){//有参构造
		this.name = name;
		this.age = age;
		this.degree = degree;
		this.direction = direction;
	}
	@Override
	void show() {//实现父类抽象方法
		//格式化输出建议使用printf
		System.out.printf("%s:%d,%s,%s\n", 
				this.name, this.age, this.degree, this.direction);
	}
}


第2题.

设计一个抽象类Graphics,它具有一个String类型参数name和两个抽象方法parameter()、area(),name用来存储图形的名称,parameter()方法用于输出图形的名称和其它属性特征,area()方法用于输出图形的面积。请用该类派生的子类实现输出一个形状为长方形、长为3宽为2和它面积以及输出一个形状为圆形、颜色为红色、半径为4和它面积。

public class Main {
    public static void main(String[] args) {
    	Rectangle rec = new Rectangle("长方形", 3, 4);
    	Circle cir = new Circle("圆形", "红色", 2);
    	rec.parameter();
    	rec.area();
    	cir.parameter();
    	cir.area();
    }
}
abstract class Graphics{
	String name;
	abstract void parameter();//用于输出图形的名称和其它属性特征
	abstract void area();//用于输出图形面积
}
class Rectangle extends Graphics{
	double length, width;
	Rectangle(String name, double length, double width){
		this.name = name;
		this.length = length;
		this.width = width;
	}
	@Override
	void parameter() {
		System.out.printf("这是一个长方形,它的长为%.2f,宽为%.2f\n", this.length, this.width);
		
	}

	@Override
	void area() {
		System.out.printf("长为%.2f,宽为%.2f的长方形的面积为%.2f\n", this.length, this.width, this.length*this.width);
	}
	
}
class Circle extends Graphics{
	double r;
	String color;
	Circle(String name, String color, double r){
		this.name = name;
		this.r = r;
		this.color = color;
	}
	@Override
	void parameter() {
		System.out.printf("这是一个圆形,它的颜色为%s,它的半径为%.2f\n", this.color, this.r);
		
	}

	@Override
	void area() {
		System.out.printf("取PI为3.14,则半径为%.2f的圆的面积为%.2f\n", this.r, 3.14*this.r*this.r);
	}
}


第3题.

设计一个接口circleInterface,要求接口中有一个定义PI的常量以及一个计算圆面积的空方法circleArea()。然后设计一个类circleClass实现该接口,通过构造函数circleClass(double r)定义圆半径,并增加一个显示圆面积的方法。最后,通过上述类生成两个半径分别为3.5、5.0的圆对象circle1、circle2进行测试。

interface circleInterface{
	//注意,接口中的变量默认是public static final修饰的,方法默认是public abstract修饰的
	double PI = 3.14;
	double circleArea();
}
public class Main {
    public static void main(String[] args) {
    	circleClass c1 = new circleClass(3.5);
    	circleClass c2 = new circleClass(5.0);
    	c1.show_area();
    	c2.show_area();
    }
}
class circleClass implements circleInterface{
	double r;
	circleClass(double r){//有参构造设置圆半径
		this.r = r;
	}
	public double circleArea() {//父类的方法由public修饰,子类的权限不得小于public
		return this.PI * this.r * this.r;
	}
	void show_area() {
		System.out.println(this.circleArea());
	}
	
}


第4题.

设计一个Shape接口和它的两个实现类Square和Circle,要求如下:1)Shape接口中有一个抽象方法area(),方法接收一个double类型的参数,返回一个double类型的结果。2)Square和Circle中实现了Shape接口的area()抽象方法,分别求正方形和圆形的面积并返回。在测试类中创建Square和Circle对象,计算边长为2的正方形面积和半径为3的园面积

interface Shape{
	double PI = 3.14;
	//注意,接口中的变量默认是public static final修饰的,方法默认是public abstract修饰的
	double area(double para);
}
public class Main {
    public static void main(String[] args) {
    	//没有写构造方法的类,默认存在一个无参构造,
    	//根据题目的意思,area()方法需要接收一个参数,因此我们直接利用这个参数给Square类对象和Circle类对象设置边长和半径
    	//但这种方法必须要先调用area()方法给对象初始化,存在一定局限性
    	Square squ = new Square();
    	double squ_s = squ.area(2);
    	System.out.printf("边长为%.2f的正方形的面积为%.2f\n", squ.l, squ_s);
    	
    	Circle cir = new Circle();
    	double cir_s = cir.area(3);
    	System.out.printf("半径为%.2f的圆的面积为%.2f\n", cir.r, cir_s);
    }
}
class Square implements Shape{
	double l;
	@Override
	public double area(double para) {
		this.l = para;
		return this.l * this.l;
	}
}
class Circle implements Shape{
	double r;
	@Override
	public double area(double para) {
		this.r = para;
		return this.PI * this.r * this.r;
	}
}

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

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

相关文章

使用ES6 async awai t进行异步处理

我们往往在项目中会遇到这样的业务需求,就是首先先进行一个ajax请求,然后再进行下一个ajax请求,而下一个请求需要使用上一个请求得到的数据,请求少了还好说,如果多了,就要一层一层的嵌套,就好像…

AI自动生成代码工具

AI自动生成代码工具是一种利用人工智能技术来辅助或自动化软件开发过程中的编码任务的工具。这些工具使用机器学习和自然语言处理等技术,根据开发者的需求生成相应的源代码。以下是一些常见的AI自动生成代码工具,希望对大家有所帮助。北京木奇移动技术有…

小航助学2023年9月GESP_Scratch一级真题(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号 单选题3.00分 删除编辑附件图文 答案:C 第1题我们通常说的“内存”属于计算机部件中的( ) A、输出设备B、输入设备C、存储设备D、打印设备 答案解析: 单选题3…

Kubernetes(K8s 1.27.x) 快速上手+实践,无废话纯享版(视频笔记)

视频源:1.03-k8s是什么?_哔哩哔哩_bilibili 1 基础知识 1.1 K8s 有用么? K8s有没有用 K8s要不要学? 参考资料: https://www.infoq.com/articles/devops-and-cloud-trends-2022/?itm_sourcearticles_about_InfoQ-trends-report…

FPGA实现电机位置环、速度环双闭环PID控制

一、设计思路 主要设计思路就是根据之前写的一篇FPGA实现电机转速PID控制,前面已经实现了位置环的控制,思想就是通过电机编码器的当前位置值不断地修正PID去控制速度。 那为了更好的实现控制,可以在位置环后加上速度环,实现电机位…

thinkphp lists todo

来由: 数据库的这个字段我想返回成: 新奇的写法如下: 逻辑层的代码: public function goodsDetail($goodId){$detail $this->good->where(id, $goodId)->hidden([type_params,user_id])->find();if (!$detail) {ret…

LinuxBasicsForHackers笔记 -- 进程管理

进程是一个正在运行和使用资源的程序。 Linux 内核是操作系统的内核,几乎控制着一切,在创建进程时,它会按顺序为每个进程分配一个唯一的进程 ID (PID)。 查看进程 ps – 用于在命令行查看哪些进程处于活动状态。单独使用 ps 命令并不能真正…

线上盲盒扭蛋机,开启潮玩新玩法

盲盒近几年非常火爆,因其不确定性、随机性吸引着盲盒爱好者,引起了潮玩文化风潮。扭蛋机是盲盒的一种新抽取模式,线上扭蛋机小程序在具有盲盒的优势外,还具有较大吸引力,用户参与率较高,这也使得扭蛋机成为…

Spring 依赖注入的三种方式优缺点

小王学习录 前言属性注入1. 属性注入的优点2. 属性注入的缺点 Setter注入Setter注入的优点Setter注入的缺点 构造方法注入1. 构造方法的优点 总结补充Aurowired注解和Resource注解的区别 前言 在前面的文章中介绍了基于注解的方式将Bean存储到Spring中, 接下来介绍如何基于注解…

11.Java安卓程序设计-基于SSM框架的Android平台健康管理系统的设计与实现

摘要 随着人们生活水平的提高和健康意识的增强,健康管理系统在日常生活中扮演着越来越重要的角色。本研究旨在设计并实现一款基于SSM框架的Android平台健康管理系统,为用户提供全面的健康监测和管理服务。 在需求分析阶段,我们明确了系统的…

LLM微调(三)| 大模型中RLHF + Reward Model + PPO技术解析

本文将深入探讨RLHF(Reinforcement Learning with Human Feedback)、RM(reward model)和PPO(Proximal Policy Optimizer)算法的概念。然后,通过代码演示使用RLHF训练自己的大模型和奖励模型RM。…

上网监控软件——安全与隐私的平衡

网络已经成为人们生活和工作中不可或缺的一部分。然而,随着网络使用的普及,网络安全问题也日益突出。上网监控软件作为网络安全领域的一个重要组成部分,在保护企业和家庭网络安全方面发挥着重要作用。 本文将探讨上网监控软件的背景、功能、优…

Java第二十一章

一.网络程序设计基础 1.网络协议 网络协议规定了计算机之间连接的物理、机械(网线与网卡的连接规定)、电气(有效的电平范围)等特征,计算机之间的相互寻址规则,数据发送冲突的解决方式,长数据如何分段传送与接收等内容.就像不同的国家有不同的…

AI烟火识别智能视频分析系统解决方案

引言 随着城市化进程的加快和高科技的迅猛发展,传统的消防系统逐渐显露出局限性。在这种背景下,AI烟火识别智慧消防解决方案应运而生,它融合了最新的AI技术,旨在提高火灾的预防、检测、应对和控制能力,保护人民生命财…

Sbatch, Salloc提交任务相关

salloc 申请计算节点,然后登录到申请到的计算节点上运行指令; salloc的参数与sbatch相同,该部分先介绍一个简单的使用案例;随后介绍一个GPU的使用案例;最后介绍一个跨节点使用案例; 首先是一个简单的例子&a…

基于springboot实现的仿天猫商城项目

一、系统架构 前端:jsp | js | css | jquery 后端:springboot | mybatis-plus 环境:jdk1.7 | mysql | maven 二、代码及数据库 三、功能介绍 01. web端-首页 02. web端-商品查询 03. web端-商品详情 04. web端-购物车 05. web端-订单…

【网络安全】-《网络安全法》制定背景和核心内容

文章目录 1. 背景介绍1.1 数字时代的崛起1.2 中国网络安全形势 2. 《网络安全法》核心内容2.1 法律适用范围2.2 个人信息保护2.3 关键信息基础设施保护2.4 网络安全监管和应急响应2.5 网络产品和服务安全管理2.6 法律责任和处罚 3. 法律的意义和影响3.1 维护国家安全3.2 保护个…

《使用ThinkPHP6开发项目》 - 设置项目环境变量

《使用ThinkPHP6开发项目》 - 安装ThinkPHP框架-CSDN博客 在上一编我们讲了ThinkPHP6框架的创建,创建完成ThinkPHP6框架后,我们这里就可以开始设置我们的环境变量了。 安装完成ThinkPHP6框架生成的项目文件 修改项目配置我们修改项目config文件夹里的对…

<JavaEE> 多线程编程中的“等待和通知机制”:wait 和 notify 方法

目录 一、等待和通知机制的概念 二、wait() 方法 2.1 wait() 方法的使用 2.2 超时等待 2.3 异常唤醒 2.4 唤醒等待的方法 三、notify() 方法 四、notifyAll() 方法 五、wait 和 sleep 的对比 一、等待和通知机制的概念 1)什么是等待和通知机制&#xff1f…

2023年4K投影仪怎么选?极米H6 4K高亮版怎么样?

随着人们生活水平的不断提升,投影仪也逐渐成为了家家户户的必备家居好物。近十年来,中国投影仪市场规模增长数倍,年均增长率大幅提高。从近10年的发展趋势来看,投影仪行业处于高速发展期。 此前,极米科技推出的极米H6…