学生和老师-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)

news2024/12/29 17:56:40

【案例4-4】学生和老师

【案例介绍】

1.案例描述

在班级中上课时,老师在讲台上讲课,偶有提问,会点名学生回答问题。虽然老师和学生都在讲话,但讲话的具体内容却不相同。本案例要求使用抽象类的知识编写一个程序实现老师上课的情景。

2.运行结果

运行结果

【案例分析】

(1)定义一个抽象类Person,在Person类中声明两个属性:name和age,并设置其对应的getter方法,用于获取人的姓名和年龄;在Person类中声明一个有参构造方法,用于对Person类中的属性进行初始化;在Person类中声明一个say()方法。

(2)定义类 Student,并继承Person类。声明Student类的构造方法并重写Person类的say()方法。

(3)定义类 Teacher,并继承Person类。声明Teacher类的构造方法并重写Person类的say()方法。

(4)定义测试类,在测试类中分别使用向上转型的方式实例化两个Person对象per1和per2,并分别使用per1和per2调用say()方法。

【案例实现】

AbstractDemo.java

  1. abstract class Person {
  2.     private String name;
  3.     private int age;
  4.     public Person(String name, int age) {
  5.         this.name = name;
  6.         this.age = age;
  7.     }
  8.     public String getName() {
  9.         return name;
  10.     }
  11.     public int getAge() {
  12.         return age;
  13.     }
  14.     public abstract void say();
  15. }
  16. class Student extends Person{
  17.     public Student(String name, int age) {
  18.         super(name, age);
  19.     }
  20.     public void say() {
  21.         System.out.println("学生姓名:"+this.getName()+",年龄:
  22.       "+this.getAge()+",负责回答问题。");
  23.     }
  24. }
  25. class Teacher extends Person{
  26.     public Teacher(String name, int age) {
  27.         super(name, age);
  28.     }
  29.     public void say() {
  30.         System.out.println("老师姓名:"+this.getName()+",年龄:
  31.       "+this.getAge()+",负责提出问题。");
  32.     }
  33. }
  34. public class AbstractDemo{
  35.     public static void main(String[] args){
  36.         Person per1 = new Student("张三",18);
  37.         Person per2 = new Teacher("李四",30);
  38.         per1.say();
  39.         per2.say();
  40.     }
  41. }

上述代码中,第1~15行代码定义了一个抽象类Person,在Person类中声明了name和age属性和其对应的getter方法和构造方法,并声明了say()方法;第16~24行代码定义了一个Student类并继承Person类,在Student类中声明了Student类的构造方法并重写Person类的say()方法;第25~33行代码定义了一个Teacher类并继承Person类,在Teacher类中声明了Teacher类的构造方法并重写Person类的say()方法;第34~41行代码分别使用向上转型的方式实例化了两个Person对象per1和per2,并分别使用per1和per2调用say()方法。

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

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

相关文章

Allegro如何快速清除多余的规则设置操作指导

Allegro如何快速清除多余的规则设置操作指导 在用Allegro做PCB设计的时候,会给PCB设置一些规则,在PCB设计完成之后,可能会有一些没有使用到的规则,如下图 Physical规则中的45OHM的规则是多余的 单独某个规则可以直接在规则管理器中删除,如果比较多可以用下面方法批量删除…

真实景观渲染技巧【Three.js】

受到一些很棒的 three.js 演示、与 covid 相关的旅行禁令以及可能在 pinterest 上花太多时间看美丽的旅行照片的启发——我开始看看我是否可以使用 three.js 和r3f在浏览器中渲染一个令人信服的风景场景。 推荐:将 NSDT场景编辑器 加入你的3D开发工具链。 在过去一个…

AnLogicFPGA设计的时序约束及时序收敛

本篇博文讲了三个内容:时序约束基本概念、时序约束命令、时序收敛技巧 时序约束基本概念 时序设计的实质就是满足每一个触发器的建立(setup)时间和保持(hold)时间。 建立时间(Tsu) 触发器的时钟信号沿到来以前&…

零信任-新华三H3C零信任介绍(12)

​目录 ​新华三零信任是什么? 新华三零信任架构特点 新华三零信任架构 新华三零信任架构适用场景 新华三零信任的未来发展展望 新华三零信任是什么? 建立新边界 全面身份化。新华三贯彻“永不信任,始终验证”的原则,通过对…

JavaWeb7-线程状态(生命周期)及转换过程

目录 1.所有线程状态(共6种) ①NEW-新建状态 ②RUNNABLE-运行状态 RUNNABLE(得到时间片运行中状态) READY(已经保存了上下文,但还未得到时间片的就绪状态)。 ③BLOCKED-阻塞状态 ④WAITI…

使用NutUI创建小程序和H5界面

做开发的时间长了,技术都是通用的,创建小程序和H5界面有很多的UI,本章节演示使用NutUI来创建,官网,NutUI - 移动端 Vue3 小程序组件库 1.使用HBuilder X创建一个uni-app的程序,如图所示 2. 安装UniNutUI …

nvm的使用与坑

1、nvm 介绍 Node Version Manager - 符合 POSIX 标准的 bash 脚本,用于管理多个活动的 node.js 版本 官网为 nvm-windows,点击这里进行下载 2、使用场景 比如有几个项目,这些项目的需求都不太一样,导致了这些个项目需要依赖的…

论文投稿指南——中文核心期刊推荐(管理学)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

多彩的声音-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)

【案例4-3】多彩的声音 记得 关注,收藏,评论哦,作者将持续更新。。。。 【案例介绍】 案例描述 设计和实现一个Soundable发声接口,该接口具有发声功能,同时还能调节声音大小。 Soundable接口的这些功能将由有3种声音…

【C++的OpenCV】第一课-opencv的介绍和安装(Linux环境下)

第一课-目录一、基本介绍1.1 官网1.2 git源码1.3 介绍二、OpenCV的相关部署工作2.1 Linux平台下部署OpenCV一、基本介绍 1.1 官网 opencv官网 注意:官网为英文版本,可以使用浏览器自带的翻译插件进行翻译,真心不推荐大家去看别人翻译的&am…

vue实现xml在线编辑功能

先看效果 避免误会 这是一个在线编辑器 我们可以在这上面随意的编写xml代码格式 我们修改上面的内容之后 就可以在控制台输出内容 如果这正是您想要的东西 那就可以先创建一个vue项目 我们先引入依赖 npm install brace -S npm install element-ui -S npm install vue-cli…

原型链污染

目录 前置知识 原型对象 prototype和__proto__的区别 原型链概念 原型链的继承 原型 链污染 原型链污染原理 javascript中可能会存在原型链污染的危险函数 原型链污染的实际应用 JavaScript中可以触发弹窗的函数 前置知识 原型对象 在JavaScript中,每个函…

9-静态链表及其有关操作

链表可以用malloc/new和结构体加指针的方式来实现,那种实现方式实现的链表又被称为动态链表。但是我们还可以利用数组的方式来实现一个链表,这种实现方式称为静态链表。 静态单链表 我们知道,一个链表节点主要由两大部分组成:数…

黑马Spring学习笔记(一)——IOC/DI核心概念、入门案例

目录 一、Spring系统架构和学习路线 二、Spring核心概念 2.1 IOC、IOC容器、Bean、DI 2.1.1 IOC(Inversion of Control)控制反转 2.1.2 DI(Dependency Injection)依赖注入 2.2 核心概念小结 三、入门案例 3.1 IOC入门…

【C++入门】引用、内联函数、auto关键字、基于范围的for循环(C++11)、指针空值nullptr(C++11)

文章目录引用引用概念引用特性引用使用场景常引用内联函数宏的优缺点?C有哪些技术替代宏?auto关键字auto不能推导的场景基于范围的for循环(C11)指针空值nullptr(C11)引用 引用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名&…

一篇搞懂UnitTest

unittest单元测试框架是受到 JUnit 的启发,与其他语言中的主流单元测试框架有着相似的风格。其支持测试自动化、支持将测试样例聚合到测试集中,并将测试与报告框架独立开来。unittest模块是Python标准库中的模块。在此之前需要先了解几个概念&#xff1a…

linux高级命令之线程执行带有参数的任务

线程执行带有参数的任务学习目标能够写出线程执行带有参数的任务1. 线程执行带有参数的任务的介绍前面我们使用线程执行的任务是没有参数的,假如我们使用线程执行的任务带有参数,如何给函数传参呢?Thread类执行任务并给任务传参数有两种方式:args 表示以…

NTC热敏电阻

NTC热敏电阻: 负温度系数热敏电阻。 Negative Temperature Coefficient Thermistor 特性: 由锰 (Mn) 、镍 (Ni) 、钴 (Co) 等成分的氧化物烧制而成的陶瓷。阻值随温度上升而下降。 工作温度范围宽:一般的都可用于-40℃ to 125℃。有的高…

[Pytorch] Linear层输出nan

参考链接: https://discuss.pytorch.org/t/well-formed-input-into-a-simple-linear-layer-output-nan/74720/11 总结原因: numpy需要更新 PS. 查看numpy版本号 打开Anaconda Prompt 进入环境 输入命令conda activate envname 然后输入pip show numpy…

MongoDB 自动增长

MongoDB 自动增长 MongoDB 没有像 SQL 一样有自动增长的功能, MongoDB 的 _id 是系统自动生成的12字节唯一标识。但在某些情况下,可能需要实现 ObjectId 自动增长功能。而MongoDB 并没有提供这个功能,那么可以通过编程的方式来实现_id字段自…