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.mzph.cn/news/206662.shtml

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

相关文章

js moment计算当前时间到24:00:00的剩余时间

2023.12.7今天我学习了如何计算当前的时间到24:00:00剩下的时间,https://momentjs.cn/ const now moment(); // 获取当前时间const endOfDay moment().endOf(day); // 设置当天的 23:59:59const duration moment.duration(endOfDay.diff(now)); // 计算剩余时间的…

第 7 部分 — 增强 LLM 安全性的策略:数学和伦理框架

一、说明 增强大型语言模型 (LLM) 安全性的追求是技术创新、道德考虑和实际应用的复杂相互作用。这项努力需要一种深入而富有洞察力的方法,将先进的数学模型与道德原则和谐地融合在一起,以确保LLM的发展不仅在技术上稳健,而且在道德上合理且对…

C#winform点击按钮下载数据库中表的字段到Excel上

C#winform点击按钮下载数据库中表的字段到Excel上 需求:C#winform点击按钮下载数据库中表的字段到Excel,并计算下载消耗的时间以及文件存放位置。 C#实现 using System; using System.Data; using System.Data.OleDb; using System.Data.SqlClient; u…

Flutter 如何更新showModalBottomSheet 中的数据

showDialog(context: context,builder: (context) {String label test;//StatefulBuilderreturn StatefulBuilder(//在这里为了区分,在构建builder的时候将setState方法命名为了setDialogState。builder: (context, setDialogState) {print(label $label);return …

【LeetCode】268. 丢失的数字

268. 丢失的数字 难度:简单 题目 给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1: 输入:nums [3,0,1] 输出:2 解释:n 3,因为有 3…

[Makefile] include 关键字

在 Makefile 中,include 关键字的作用是引入其他文件的内容,通常用于将其他 Makefile 文件(通常是头文件)的内容包含到当前的 Makefile 中。这样可以实现模块化管理和代码重用。 include使用 使用 include 关键字的语法如下&…

网络攻击(一)--安全渗透简介

1. 安全渗透概述 目标 了解渗透测试的基本概念了解渗透测试从业人员的注意事项 1.1. 写在前面的话 在了解渗透测试之前,我们先看看,信息安全相关的法律是怎么样的 中华人民共和国网络安全法 《中华人民共和国网络安全法》由全国人民代表大会常务委员会…

Spring Cloud切换内嵌Tomcat为宝兰德Application Server

目录 替换Tomcat中间件Tomcat是什么Spring Cloud剔除tomcat引入宝兰德Application Server打包运行授权导入 替换Tomcat中间件 Tomcat是什么 Spring Cloud剔除tomcat <!--集成springmvc框架 --><dependency><groupId>org.springframework.boot</groupId&…

Boost:asio多io_service,多线程run

多io_service,多线程run,相当于多个线程分别处理注册在不同io_service上的回调,也就是每个线程排某个io_service的异步处理: //mio_mth.cpp #include <boost/asio.hpp> #include <boost/date_time/posix_time/posix_time_types.hpp> #include <iostream>…

MAC PHP版本安装问题

安装php 7.4版本不成功 Error: php7.4 has been disabled because it is a versioned formula! 因为php7.4官方已经不再维护&#xff0c;所以Hombrew将该php版本移出了repository&#xff0c;所以安装不了。 解决办法 从第三方仓库中安装 //将第三方仓库加入brew brew tap sh…

7.1 C++11指针空值—nullptr

一、NULL和nullptr区别 NULL是宏定义&#xff0c;nullptr是关键字。 #ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif #endif nullptr可以隐式转换为任意指针类型&#xff0c;而NULL需要显示转换 void func(char *) {std::cout <<…

Java安全之Commons Collections6分析

CC6分析 import org.apache.commons.collections.*; import org.apache.commons.collections.functors.ChainedTransformer; import org.apache.commons.collections.functors.ConstantTransformer; import org.apache.commons.collections.functors.InvokerTransformer; impo…

Flask 动态路由、请求数据接收、视图函数返回值详解

一、动态路由 在前面的博客中&#xff0c;我们学习了如何创建基本的 Flask 应用&#xff0c;并定义了一些简单的路由。但有时候&#xff0c;我们需要更加灵活的路由&#xff0c;能够根据用户请求的不同来动态生成响应。Flask 提供了动态路由的功能&#xff0c;使我们能够轻松处…

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

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

我的Android播放器封装经验

近段时间&#xff0c;电视家不能用了&#xff0c;好吧&#xff0c;自己开发一个APP。其实也不是开发&#xff0c;而是基于现有的播放器核心自己封装一个&#xff0c;只要能够非常方便操作观看电视就好。 当然&#xff0c;前提是要有节目源&#xff0c;这个我早已完成&#xff…

1-2算法基础-常用库函数

1.排序 sort(first,last,cmp) first指向要排序范围的第一个元素&#xff0c;从0起 last指向要排序范围的最后一个元素的下一个位置 cmp&#xff08;可选&#xff09;&#xff0c;自定义函数&#xff0c;默认从小到大 评测系统 #include <iostream> #include<algorith…

Java一对一聊天

服务端 package 一对一用户;import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Vector;…

three.js 入门三:buffergeometry贴图属性(position、index和uvs)

环境&#xff1a; three.js 0.159.0 一、基础知识 geometry&#xff1a;决定物体的几何形状、轮廓&#xff1b;material&#xff1a;决定物体呈现的色彩、光影特性、贴图皮肤&#xff1b;mesh&#xff1a;场景中的物体&#xff0c;由geometry和materia组成&#xff1b;textu…

十五、机器学习进阶知识:K-Means聚类算法

文章目录 1、聚类概述2、K-Means聚类算法原理3、K-Means聚类实现3.1 基于SKlearn实现K-Means聚类3.2 自编写方式实现K-Means聚类 4、算法不足与解决思路4.1 存在的问题4.2 常见K值确定方法4.3 算法评估优化思路 1、聚类概述 聚类&#xff08;Clustering&#xff09;是指将不同…

浅谈WPF之控件拖拽与拖动

使用过office的visio软件画图的小伙伴都知道&#xff0c;画图软件分为两部分&#xff0c;左侧图形库&#xff0c;存放各种图标&#xff0c;右侧是一个画布&#xff0c;将左侧图形库的图标控件拖拽到右侧画布&#xff0c;就会生成一个新的控件&#xff0c;并且可以自由拖动。那如…