回顾:员工继承层次
本课属于 Coddy Java 学习旅程的“面向对象编程”单元。第 27 课,共 87 课。
挑战
简单让我们构建一个完整的员工层级系统,综合运用本章介绍的所有继承概念。你将创建一个公司结构,让不同类型的员工共享常见属性,同时拥有各自专门的行为。
你将把代码分成 4 个文件:
Employee.java:创建所有员工共用的基类。每位员工都有姓名和薪水。添加一个构造函数,用于初始化这两个字段;再添加一个方法getDetails(),返回:[name] earns $[salary]。还要添加一个方法work(),打印:[name] is working。Manager.java:创建一个继承 Employee 的类。经理有一个额外的teamSize字段,表示他们管理的人数。使用super处理父类的初始化。重写work()方法,打印:[name] is managing a team of [teamSize]。添加一个方法getManagerDetails(),返回:Manager: [name] earns $[salary], Team size: [teamSize]。Developer.java:创建另一个继承 Employee 的类。开发人员有一个language字段,表示他们擅长的编程语言。同样,使用super处理父类部分。重写work()方法,打印:[name] is coding in [language]。添加一个方法getDeveloperDetails(),返回:Developer: [name] earns $[salary], Language: [language]。Main.java:在这里把所有内容整合起来。你会收到 5 个输入:员工姓名、薪水、经理的团队人数、另一位员工的姓名,以及开发人员使用的编程语言。创建一个 Manager 和一个 Developer,然后分别对他们调用专属的详情方法,再调用他们的work()方法。
你会按以下顺序收到 5 个输入:经理姓名(String)、经理薪水(double)、团队人数(int)、开发人员姓名(String)和编程语言(String)。开发人员的薪水设为 75000.0。
使用 String.format("%.2f", salary) 将所有薪水值格式化为保留 2 位小数。输出总共应包含 4 行:先显示经理的详情和工作行为,再显示开发人员的详情和工作行为。
亲手试试
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读取输入
String managerName = scanner.nextLine();
double managerSalary = scanner.nextDouble();
int teamSize = scanner.nextInt();
scanner.nextLine(); // 读取并跳过换行符
String developerName = scanner.nextLine();
String language = scanner.nextLine();
// Developer 的薪水固定为 75000.0
double developerSalary = 75000.0;
// TODO: 使用 managerName、managerSalary 和 teamSize 创建 Manager 对象
// TODO: 使用 developerName、developerSalary 和 language 创建 Developer 对象
// TODO: 使用 getManagerDetails() 输出经理的详细信息
// TODO: 调用经理的 work() 方法
// TODO: 使用 getDeveloperDetails() 输出开发人员的详细信息
// TODO: 调用开发人员的 work() 方法
}
}
面向对象编程中的所有课
自己练习: Java 在线编译器