Java面向对象编程之继承练习题(三)
作业1
写一个Person类,有编号id,姓名name,职位job。
构造方法带三个参数。
方法:
登陆login
注册register
自我介绍talk
写一个学生Student类继承Person类,方法有:考试test
属性有:学费money
写一个老师Teacher类继承Person类,
属性有 工资salary
方法有:工作work
写一个测试类TestPerson,测试学生和老师
学生:姓名-张三 职位-学生 学费-18000
老师:姓名-李四 职位-老师 工资-8000
解题步骤:
1.先写四个类
2.再写继承关系,构造方法(难点)
3.再写子类特有的属性及方法(注意方法重写)
4.测试
作业2(p309)
定义一个父类:形状类Shapes,里面有两个方法,分别是求面积和周长。
定义一个子类:矩形Rectangle
定义一个子类:三角形 Triagle
定义一个子类:圆 Circle
定义一个测试类:传入圆的半径4 输出周长和面积
传入矩形的长和宽4,5 输出周长和面积
传入三角形三边:3,4,5 输出周长和面积
作业3:
设计一个教师类Teacher,其中包含一个方法pay,代表教师工资。
再从教师类派生出普通教师(CommonTeacher)/高级教师(HighTeacher)和特级教师(SuperfineTeacher)三个子类,实现为不同教师发工资的功能。
课后作业
第一题:说明原因
11.13假设Fruit、Apple、Orange、GoldenDelicious和Macintosh声明为如图11-6所示。
图11-6 GoldenDelicious和Macintosh是Apple的子类;Apple和Orange是Fruit的子类
假设给出下面的声明:
Fruit fruit = new GoldenDelicious();
Orange orange = new Orange();
解:这题主要考察 父可以new子,子不可以new父。instancedof判断一个对象是否是其本身或其子类。
回答下面的问题:答案我写了,你们要分析出结果为什么会这样,各小组要讨论要讨论。
- fruit instanceof Fruit的值为true吗?果汁是水果的子类吗?true
- fruit instanceof Orange的值为true吗?false
- fruit instanceof Apple 的值为true吗?T
- fruit instanceof GoldenDelicious的值为true吗?可以是子类也可以是本身。
- fruit instanceof Macintosh的值为true吗? F
- orange instanceof Orange的值为true吗?T
- orange instanceof Fruit的值为true吗?T
- orange instanceof Apple的值为true吗?F
- 假设makeApple Cider方法定义在Apple类中。fruit可以调用这个方法吗?orange可以调用这个方法吗? F父new子,如果不是方法重写,调不了子类特有的方法 F
- 假设makeOrangeJuice方法定义在Orange类中。Orange可以调用这个方法吗?fruit可以调用这个方法吗?T 父类不能调子类特有的方法 F
- 语句Orange p=new Apple()是否合法?不合法
- 语句Macintosh p=new Apple()是否合法? 不合法
- 语句Apple p=new Macintosh()是否合法?合法
第二题 UML图见文档
11.1(三角形类Triangle)设计一个名为Triangle的类来扩展GeometricObject类。该类包括:
(1)三个名为side1、side2和side3的double数据域表示这个三角形的三条边,它们的默认值是1.0。
(2)一个无参构造方法创建默认的三角形。
(3)一个能创建带指定side1、side2和side3的三角形的构造方法。
(4)所有三个数据域的访问器方法。
(5)一个名为getArea()的方法返回这个三角形的面积。
(6)一个名为getPerimeter()方法返回这个三角形的周长。
(7)一个名为 toString()方法返回这个三角形的字符串描述。
计算三角形面积的公式参见练习题2.21海伦公式。toString()实现如下所示:
return ”Triangle:side1 = “ + side1 + “ side2 = “ + side2 + ” side3 = “ + side3;
画出Triangle类和GeometricObject类的UML图。实现这些类。编写一个测试程序,创建边长为1、1.5和1,颜色为yellow,filled为true的Triangle对象,然后显示它的面积、周长、颜色以及是否被填充。
第三题:UML图见文档,英语不懂先翻译。
11.2 (Person、Student、Employee、Faculty和Staff类)设计一个名为Person的类和它的两个名为Student和Employee子类。Employee类又有子类:教员类Faculty和职员类Staff。每个人都有姓名、地址、电话号码和电子邮件地址。学生有班级状态(大一、大二、大三或大四)。将这些状态定义为常量。一个雇员有办公室、工资和受聘日期。定义一个名为MyDate的类,包含数据域:year(年)、month(月)、day(日)。教员有办公时间和级别。职员有职务称号。覆盖每个类中的toString方法,显示相应的类名和人名。
画出这些类的UML图。实现这些类。编写一个测试程序,创建Person、Student、Employee、Faculty和Staff,并且调用它们的toString()方法。有空再补图吧。
第四题(抽象类+继承)
定义一个抽象类Animal
定义一个子类Dog
定义一个子类Cat
根据以下内容分析
- 狗生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。狗通常的时候和人打招呼会通过“摇摇尾巴”,在被抚摸感到舒服的时候,会“旺旺叫”,而在受到惊吓情绪烦躁时,会发出“呜呜”声;
- 猫也生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。猫通常的时候和人打招呼会发出“喵~”的声音,在被抚摸情绪很好时,会发出“咕噜咕噜”声,而在受到惊吓时,会发出“嘶嘶”声;
- 青蛙是一种两栖动物(是一种陆生动物),既不是哺乳类的也不是肉食性的,属于卵生。当青蛙情绪好的时候,会在岸边“呱呱呱”的唱歌,而在受到惊吓时,会“扑通一声跳入水中”;
找出属性和方法。
提示:
- 首先需要抽取问题描述中对象
- 分析每个对象所具有的特征
- 分析每个对象所发出的动作
- 从这些对象的特征中,抽取类的属性和方法
- 分析类之间的关系,画出类结构图
抽象类和对象的基本方法:
- 对象--名词
例如:在句子“小猫喵喵叫”中,我们能够确定一个对象:猫;
- 方法--动词
例如:“旺旺叫”、“喵喵叫”都属于对象发出的动作;
- 属性或者特征--形容词
例如:“哺乳性的”“肉食性的”“卵生的”等等;
- “是”的关系--继承
例如:狗是一种动物,意味着:“狗”类 继承自“动物”类;
- “有”的关系--类的属性
例如:动物都有情绪,意味着:“情绪”是“动物”类的一个属性;
类图如下
只能帮到这里了。快写代码。
Java面向对象编程之继承练习题(三)相关推荐
- 面向对象编程之继承、多态、封装、抽象类、接口、包-上
面向对象编程之继承.多态.封装.抽象类.接口.包-上 继承 类的继承格式 为什么要继承 继承的特点 继承的种类及关键字 访问权限 多态 向上转型 动态绑定 方法重写 重写和重载的区别比较 多态的优点 ...
- C语言--面向对象编程之继承
系列文章目录 C语言实现面向对象编程的第二篇,在第一篇里面我们已经了解到了何为面向对象以及实现面向对象的第一大特性–封装,对于C来说,实现继承和多态要稍微麻烦一些. C语言实现面向对象- - 封装 C ...
- python面向对象编程指南 脚本之家_Python面向对象编程之继承与多态详解
本文实例讲述了Python面向对象编程之继承与多态.分享给大家供大家参考,具体如下: Python 类的继承 在OOP(Object Oriented Programming)程序设计中,当我们定义一 ...
- java实现多继承的三种方式
java如何实现多继承 众所周知,Java是一种面向对象的只允许单继承的语言,这是每个Java程序员从业者都知道定理.那么可不可以通过一些手段实现多继承呢?答案是可以! 实现多继承有三个方法: 多 ...
- 【C语言】C语言实现面向对象编程之继承
00. 目录 文章目录 00. 目录 01. 概述 02. 利用结构体包含实现继承功能 03. 利用私有指针实现继承功能 04. 总结 05. 附录 01. 概述 面向对象编程具有封装性.继承性.多态 ...
- 面向小姐姐的编程——JAVA面向对象之继承(三)
文章目录 方法重写(Override) 定义: 解释: 注意事项: 使用场景: 例题 Java中的访问权限修饰符 案例:Java中四种访问权限演示 需求: 分析: 代码 总结 方法重写和方法重载的区别 ...
- Java中的继承(三)
Final关键字-- package Test;public class TestFinal {//实例变量final int a=10; //a的值不能被修改public int c=20;publ ...
- js原生设计模式——2面向对象编程之继承—new+call(this)组合式继承
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- 7、JS面向对象编程之继承
Javascript本身是从Perl语言的语法演变而来的,本质上是脚本语言,随着版本的更新逐渐加入的对面向对象的模拟.我认为Js的面向对象模拟总体上做得还是不错的,因为我们不能盲从任何一种理念,不能纯 ...
最新文章
- mount -t 挂载指定的文件格式
- wex5 php开发,WeX5平台PHP开发 使用说明文档
- HttpServletRequest类用途
- python读取oracle数据到hvie parquet_创建Hive表来从parquet / avro模式读取parquet文件
- 95-20-010-协议-Kafka的Request和Response
- 禁止html页面无法粘贴复制,javascript中如何禁止复制粘贴?
- 嵌入式系统——系统安全之常见病毒漏洞刷题整理
- java全角数字_Java全角、半角字符的关系以及转换
- 工单流转 指派 php,第三节 工单的指派和处理
- 前端技术搭建飞机大战小游戏(内含源码)
- ng-alain php,在angular中基于ng-alain如何定义自己的select组件?
- 如何测试微信的点赞功能
- 一些收集的MikroTik RouterOS破解版虚拟机VMware
- event事件坐标详解(clientx, offsetx, screenX等)
- wifi卡慢延迟高_wifi卡怎么办(wifi信号满格但网速慢解决方法)
- 基于小梅哥AC620开发板的NIOS II LWIP百兆以太网例程移植到自己做的板子上
- Vercel和Railway都是云端的平台即服务提供商
- php加密系统多样化加密,【CPU-Z和威盾PHP加密专家(PHPCodeLock)哪个好用】CPU-Z和威盾PHP加密专家(PHPCodeLock)对比-ZOL下载...
- 超详细的排序算法讲解!一看就懂!
- 优化 Nginx HTTPS 延迟 - 看我如何让Nginx提速 30%的?
热门文章
- HTML径向效果,HTML5版径向渐变梯度色彩
- 启动Nginx提示:the“ssl“ parameter requires ngx_http_ssl_module in
- 初探 sort 方法和 sorted 内置函数
- nodejs+vue+elementui休闲娱乐美食优惠卷商城销售系统
- iOS积分墙和积分墙的区别在哪呢?
- python 比较两种包装的大米的价钱
- 编写函数(fun),通过函数调用,输入存款金额和存款年限,计算到期总金额和利息。
- 5G手机开打价格战,4G手机将被加速淘汰
- 《人力资源视角下的企业数字化转型》高峰圆桌论坛圆满闭幕
- huawei路由器NAT配置