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

点击返回标题->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;}@Overridevoid show() {//实现父类抽象方法//格式化输出建议使用printfSystem.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;}@Overridevoid show() {//实现父类抽象方法//格式化输出建议使用printfSystem.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;}@Overridevoid parameter() {System.out.printf("这是一个长方形,它的长为%.2f,宽为%.2f\n", this.length, this.width);}@Overridevoid 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;}@Overridevoid parameter() {System.out.printf("这是一个圆形,它的颜色为%s,它的半径为%.2f\n", this.color, this.r);}@Overridevoid 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修饰,子类的权限不得小于publicreturn 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;@Overridepublic double area(double para) {this.l = para;return this.l * this.l;}
}
class Circle implements Shape{double r;@Overridepublic double area(double para) {this.r = para;return this.PI * this.r * this.r;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element el-pagination solt 使用

起初只是想修改一下,共多少条的颜色,和跳转至 发现并不支持 网上找通过js修改,因为我这是在 dialog里面的 好像并不能适用 mounted() {document.getElementsByClassName("el-pagination__jump")[0].childNodes[0].nodeValue &quo…

【EI会议征稿中】2024年第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)

2024年第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024) 2024 4th International Conference on Artificial Intelligence, Automation and High Performance Computing 2024第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)将于20…

名创优品出海更难了,Q3净利增速放缓

近日,有媒体报道称,名创优品受市场流传针对公司的做空报告,叠加高管团队两次减持,共计180万股,若对应25美元的价格,则达4500万美元(约3.2亿元)。 12月5日,其港股收盘股价下跌14.04%&#xff1b…

cpu 300% 爆满 内存占用不高 排查

top查询 cpu最高的PID ps -ef | grep PID 查看具体哪一个jar服务 jstack -l PID > ./jstack.log 下载/打印进程的线程栈信息 可以加信息简单分析 或进一步 查看堆内存使用情况 jmap -heap Java进程id jstack.log 信息示例 Full thread dump Java HotSpot(TM) 64-Bit Se…

嵌入式Linux:ARM驱动+QT应用+OpenCV人脸识别项目实现

一、前言: 这个项目主要分为两部分,客户端(ARM板端)负责利用OpenCV采集人脸数据,利用TCP将人脸数据发送给服务器,然后服务器根据人脸数据进行人脸识别,将识别后的结果返还给客户端,客…

查看电脑cuda版本

1.找到NVODIA控制面板 输入NVIDIA搜索即可 出现NVIDIA控制面板 点击系统信息 2.WINR 输入nvidia-smi 检查了一下,电脑没用过GPU,连驱动都没有 所以,装驱动…… 选版本,下载 下载后双击打开安装 重新输入nvidia-smi 显示如下…

报错处理集

这个报错处理集的错误来源于编译arm平台的so文件产生的。但是后续可以补充成linux一个大的错误处理集。 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 第一次整理的时间是2023年12月8日10:05:59,以下错误来源于欧拉系统编译…

NumPy学习:NumPy(Numerical Python)基础(一)

1.什么是NumPy NumPy 是 Python 中用于科学计算的基础包。 它是一个 Python 库,提供多维数组对象, 各种派生对象(例如掩码数组和矩阵),以及 用于对阵列进行快速操作的各种例程,包括 数学、逻辑、形状操作、…

DELL EMC unity 存储系统日志收集方法

对于一些非简单的硬件故障,解决故障最有效、最快速的方法就是收集日志,而不是瞎搞。常见的乱搞方法就是 1. reimage系统‘ 2. 更换控制器;3, 重启。 本文详细介绍了图形界面GUI和命令行CLI下如何收集DELL EMC Unity日志的方法和常…

PHP escapeshellarg()+escapeshellcmd()绕过

文章目录 函数利用escapeshellarg()函数escapeshellcmd()函数 exp执行原理攻击面例题 [BUUCTF 2018]Online Tool例题 [网鼎杯 2020 朱雀组]Nmap 函数利用 escapeshellarg()函数 单引号 ():转义为 \。 双引号 ("):转义为 \"。 反斜杠 (\)&…

【Linux】Java 程序员必会的 Linux 最常用的命令

文章目录 lsllpwdcdtouchcatechomkdirtreermmvcpvimgreppsnetstat 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 📗 Java数据结构: 顺序表, 链…

《使用ThinkPHP6开发项目》 - 项目使用多应用开发

《使用ThinkPHP6开发项目》 - 安装ThinkPHP框架-CSDN博客 《使用ThinkPHP6开发项目》 - 设置项目环境变量-CSDN博客 安装完成ThinkPHP6项目后,项目默认生成为单应用,如需要使用多应用开发,则可按照下面步骤操作 1.删除app\controller文件夹…