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

重载和继承的实践

实验三 重载和继承的实践

实验目的

1.掌握Java语言的特点封装继承和多态;

2.掌握方法的重载;

3.掌握继承的实现。

实验内容

编写一个简单的考试程序,在控制台完成出题、答题的交互。试题(Question)分为单选(SigleChoice)和多选(MultiChoice)两种,其中,单选题和多选题继承试题类。试题间的关系如下所示。实现类及其测试。

三、程序代码及分步功能解析

package A;//导入工具类
import java.lang.reflect.Array;
import java.util.Arrays; //导入数组工具类,多选判断答案
import java.util.Scanner;//导入扫描器工具 ,用于接收用户在控制台输入的答案//核心类1 测试基类 Question 父类
public class Question {//类的属性String test;//题干String[] options;//选项//法1:无参构造public Question(){}//法2:有参构造public Question(String test,String[] options){this.test=test; //把题干赋值给当前对象的test属性this.options=options;//同理}//法1:检查答案public boolean checkAnswer(char[] answers){return false;}//法2:打印题目public void print(){}
}
//核心类2 单选 SingleQuestion 继承
//单选题
class SingleQuestion extends Question{char answer; //新增属性//法1:无参public SingleQuestion(){}//法2:有参public SingleQuestion(String test,String[] options,char answer){super(test,options);//调用父类的有参构造,初始化题干,选项this.answer=answer; //单独初始化答案}//重写父类:检查单选题答案//逻辑://1.确保用户输入答案 answers.length>0//2.用户输入第一个字符等于正确答案 answers[0]public boolean checkAnswer(char[] answers){return answers.length>0 && answers[0]==this.answer;}//重写父类:打印单选public void print(){System.out.println(test);//打印题干//循环打印所有选项for(int i=0;i<options.length;i++){System.out.println(options[i]+'\t');}System.out.println();//换行}
}
//核心类3 多选 MultiQuestion 继承
//多选题
class   MultiQuestion extends Question{char[] answer; //新增属性//构造public MultiQuestion(){}public MultiQuestion(String test,String[] options,char[] answer){super(test,options);//调用父类有参构造,初始化this.answer=answer;//单独初始化答案}//重写父类:检查多选题答案//用Arrays工具类的equals方法,比较“用户输入”与“答案”是否一致public boolean checkAnswer(char[] answers){return Arrays.equals(this.answer,answers);}//打印多选,同理public void print(){System.out.println(test);for(int i=0;i<options.length;i++){System.out.println(options[i]+'\t');}System.out.println();}
}
//核心类4:测试类 ExamTest 程序入口,负责运行整个答题流程
//测试类
class ExamTest{//main方法,Java程序的入口(程序从这开始执行)public static void main(String[] args){//创建扫描对象,用于读取用户输入//处理单选:创建单选对象-打印题目-接收输入-判断答案-输出结果Scanner scanner=new Scanner(System.in);//创建单选对象并测试SingleQuestion singleQ=new SingleQuestion("最早向刘备推荐诸葛亮的是谁?",new String[]{"A:徐庶","B:司马徽","C:鲁肃","D:关羽"},'B');singleQ.print();//调用print在控制台显示System.out.print("请输入单选题答案:");//提示用户输入//读取用户输入,转化成字符数组char[] singleAns=scanner.nextLine().toCharArray();//调用checkAnswer方法,判断答案是否正确boolean singlePass=singleQ.checkAnswer(singleAns);//根据判断结果输出提示if (singlePass){System.out.println("恭喜,单选题答对了!");}else {System.out.println("单选还得努力啊!");}//创建多选题对象并测试//处理多选题,与单选同理,对象不同MultiQuestion multiAns =new MultiQuestion("三国演义中的三绝是谁?",new String[]{"A:曹操","B:刘备","C:关羽","D:诸葛亮"},new char[]{'A','B','C'});//答案,多个,字符组multiAns.print();System.out.print("请输入多选答案:");char[] usermultiAns = scanner.nextLine().toCharArray();boolean multiPass=multiAns.checkAnswer(usermultiAns);if (multiPass){System.out.println("恭喜,多选题答对了!");}else {System.out.println("多选还得努力啊!");}scanner.close();}
}

四、程序调试结果(要求截取详细步骤)

五,实验总结

  本次实验成功实现了基于继承和多态的考试程序,全面且深入地实践了 Java 面向对象编程的核心概念。实验不仅帮助我巩固了“封装、继承、多态、方法重载”的理论知识,更在实际编码与问题解决的过程中,提升了对面向对象思想的运用能力,为后续更复杂的 Java 编程学习奠定了坚实的基础。

http://www.dtcms.com/a/466766.html

相关文章:

  • Unigram中的损失
  • 网站服务器多少钱一月亿速云
  • MySQL数据库远程无法连接
  • 做网站实训报告电子商务网站建设的四个步骤
  • 外贸门户网站seo系统源码出售
  • 6.java反射
  • 怎么做淘宝客个人网站网站程序模板
  • 即梦图片批量去水印软件运营大管家AI图片去水印工具
  • 做网站怎么套模板网站站建设建技设术技术
  • Vue 程序使用host 0.0.0.0 实现监听本机所有可用的网络接口
  • ts-jest与其他TypeScript测试工具的对比
  • 学习16天:pytest学习
  • 奉贤青岛网站建设广州市制网公司
  • 江西中恒建设集团网站网站字体怎么设置
  • 泰安网站制作哪家好网站建设目的分析
  • 怎么看网站开发者页面渗透wordpress论坛
  • 求个网站好人有好报百度贴吧商城类网站建设方案
  • 使用 python-docx 库操作 word 文档(3):读取word文档的内容
  • 鸿蒙:从相册中选取图片,并转成PixelMap作为UI显示
  • 什么是网站什么是网址东莞网站设计服务商
  • STM32 读取引脚状态 -按键输入
  • 关于网站建设分类名字logo设计在线生成免费
  • 网站的二级网页关键词在线一键生成网页
  • 深圳夫博网站建设有限公司深夜的fm免费看
  • MySQL学习笔记09:MySQL高级特性深度学习(上):count函数、数据类型与分库分表核心原理
  • 失智老年人照护实训室建设指南:从意义到实践的全面解析
  • 10分钟上手OpenAI Agents SDK
  • 中文分析原始
  • JP4-8-MyLesson前台前端(二)
  • 做js题目的网站上海网站建设公司推荐排名