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
根据以下内容分析
-
- 狗生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。狗通常的时候和人打招呼会通过“摇摇尾巴”,在被抚摸感到舒服的时候,会“旺旺叫”,而在受到惊吓情绪烦躁时,会发出“呜呜”声;
- 猫也生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。猫通常的时候和人打招呼会发出“喵~”的声音,在被抚摸情绪很好时,会发出“咕噜咕噜”声,而在受到惊吓时,会发出“嘶嘶”声;
- 青蛙是一种两栖动物(是一种陆生动物),既不是哺乳类的也不是肉食性的,属于卵生。当青蛙情绪好的时候,会在岸边“呱呱呱”的唱歌,而在受到惊吓时,会“扑通一声跳入水中”;
找出属性和方法。
提示:
- 首先需要抽取问题描述中对象
- 分析每个对象所具有的特征
- 分析每个对象所发出的动作
- 从这些对象的特征中,抽取类的属性和方法
- 分析类之间的关系,画出类结构图
抽象类和对象的基本方法:
- 对象--名词
例如:在句子“小猫喵喵叫”中,我们能够确定一个对象:猫;
- 方法--动词
例如:“旺旺叫”、“喵喵叫”都属于对象发出的动作;
- 属性或者特征--形容词
例如:“哺乳性的”“肉食性的”“卵生的”等等;
- “是”的关系--继承
例如:狗是一种动物,意味着:“狗”类 继承自“动物”类;
- “有”的关系--类的属性
例如:动物都有情绪,意味着:“情绪”是“动物”类的一个属性;
类图如下
只能帮到这里了。快写代码。