当前课程知识点:Java语言程序设计 > 第四章 面向对象:继承与多态 > 4.7 面向对象设计 > 思考:阅读Manager与Employee代码并回答问题
尝试阅读并运行如下代码:
import java.util.*;
/**
* This program demonstrates inheritance.
* @version 1.21 2004-02-21
* @author Cay Horstmann
*/
public class ManagerTest
{
public static void main(String[] args)
{
// construct a Manager object
Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15);
boss.setBonus(5000);
Employee[] staff = new Employee[3];
// fill the staff array with Manager and Employee objects
staff[0] = boss;
staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
staff[2] = new Employee("Tommy Tester", 40000, 1990, 3, 15);
// print out information about all Employee objects
for (Employee e : staff)
System.out.println("name=" + e.getName() + ",salary=" + e.getSalary());
}
}
class Employee
{
public Employee(String n, double s, int year, int month, int day)
{
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
hireDay = calendar.getTime();
}
public String getName()
{
return name;
}
public double getSalary()
{
return salary;
}
public Date getHireDay()
{
return hireDay;
}
public void raiseSalary(double byPercent)
{
double raise = salary * byPercent / 100;
salary += raise;
}
private String name;
private double salary;
private Date hireDay;
}
class Manager extends Employee
{
/**
* @param n the employee's name
* @param s the salary
* @param year the hire year
* @param month the hire month
* @param day the hire day
*/
public Manager(String n, double s, int year, int month, int day)
{
super(n, s, year, month, day);
bonus = 0;
}
public double getSalary()
{
double baseSalary = super.getSalary();
return baseSalary + bonus;
}
public void setBonus(double b)
{
bonus = b;
}
private double bonus;
}
回答问题:
1. Manager复用了Employee的什么代码?
2. Manager与Employee的主要区别在哪里?
3. main方法中,哪里体现出了多态特性?尝试分析。
4. 可选:尝试为代码绘制UML类图,并截图上来分享。
-考核方式
-1.1 Java应用、历史与基本特点
-1.2 第一个Java程序
-1.3 Java虚拟机、JRE、JDK等
-1.4 课程学习目标与方法
-1.5 实验指导:开发环境安装与配置
-1.6 Java常用类
-第1章测验 绪论
-第1章 编程题
- 第1章 课件
-2.1 Java基本语法概述
-2.2 数据类型与变量
--2.2.3 小练习:表达式正误判断
-2.3 运算符
--2.3.1 运算符1:算数运算符、赋值运算符、比较运算符
-2.4 选择结构
-2.5 循环结构
--思考:循环的使用
-2.6 方法
-2.7 数组与数组列表
-2.8 引用数据类型
-第2章测验 Java基本语法
-3.1 面向对象基本概念
-3.2 封装与模块化
-3.3 对象的初始化
-3.4 static与final
-3.5 使用包管理类
--练一练:在Eclipse中查看String等常用类的代码
-3.6 案例:面向对象之类的设计
-第3章测验 面向对象基础
-4.1 面向对象继承
--练一练:设计一个Triangle三角形类与Shape形状类,并用UML类图进行描述
-4.2 继承与覆盖
-4.3 继承与多态
-4.4 访问控制符
-4.5 final关键字
-4.6 抽象类
-4.7 面向对象设计
--思考:阅读Manager与Employee代码并回答问题
-4.8 实验指导:Eclipse的使用(自动代码生成)
-第4章测验 面向对象(继承与多态)
-5.1 接口基本概念
-5.2 常用接口
--思考:使用Comparable接口改造Shape及其子类
--思考:Comparable接口与Comparator接口的区别
-5.3 使用接口还是继承
-5.4 案例:DAO模式
-5.5 总结:接口
-5.6 Java8接口新特性:默认方法
-5.7 嵌套类
-5.8 Lambda表达式
-5.9 案例:购物车改进
-第5章测验 面向对象(接口与嵌套类)
-6.1 集合概述
-6.2 List接口
-6.3 Iterator迭代器
-6.4 Set接口
-6.5 Map接口
-6.6 泛型
--6.6.1 泛型
-6.7 集合应用
-6.8 集合其他常用方法
-可选:6.9 Collections工具类
-可选:6.10 Java8集合新特性
-第6章测验 集合框架
-7.1 基本概念
-7.2 程序处理机制
-7.3 异常继承层次
-7.4 异常处理:try...catch...finally
--练一练:try...catch...finally综合练习
-7.5 异常处理:throws与throw关键字
-7.6 不要滥用异常
-第7章测验 异常处理
-8.1 概述
-8.2 输入流、输出流基本概念
-8.3 File类
-8.4 字节流
-8.5 字符流
-8.6 缓冲流
-第8章测验 文件与流