回顾:员工层次结构
本课属于 Coddy Dart 学习旅程的“面向对象编程”单元。第 42 课,共 110 课。
挑战
简单我们来构建一个完整的员工层级系统,把本章介绍的所有继承概念结合起来。你将创建一个员工基类,并扩展出具有各自独特行为的专门角色。
你将把代码整理到两个文件中:
employee.dart:在这里定义员工层级结构:- 创建一个
Employee基类,包含String name、double salary和int id属性。添加一个构造函数和一个方法getDetails(),该方法返回'[name] (ID: [id]) - Salary: $[salary]' - 创建一个继承自
Employee的Manager类,并添加int teamSize属性。使用 super 参数传递继承的字段。重写getDetails(),使其返回父类的详细信息,并在后面追加', Team: [teamSize] members' - 创建一个继承自
Employee的Developer类,并添加String language属性。重写getDetails(),使其返回父类的详细信息,并在后面追加', Specializes in [language]' - 创建一个继承自
Developer的TeamLead类,并添加int projectCount属性。重写getDetails(),在Developer版本的基础上追加', Leading [projectCount] projects'
- 创建一个
main.dart:导入员工文件,并为每种员工类型创建实例:- 创建一个
Employee,姓名为'Alice',薪水为50000.0,id 为101 - 创建一个
Manager,姓名为'Bob',薪水为75000.0,id 为102,teamSize 为8 - 创建一个
Developer,姓名为'Carol',薪水为65000.0,id 为103,language 为'Dart' - 创建一个
TeamLead,姓名为'David',薪水为80000.0,id 为104,language 为'Python',projectCount 为3 - 对每位员工调用
getDetails(),并逐行打印结果
- 创建一个
注意,TeamLead 展示了多层继承:它继承自 Developer,而 Developer 继承自 Employee。每一层都会添加自己的详细信息,同时使用 super 保留父类中的信息。
预期输出:
Alice (ID: 101) - Salary: $50000.0
Bob (ID: 102) - Salary: $75000.0, Team: 8 members
Carol (ID: 103) - Salary: $65000.0, Specializes in Dart
David (ID: 104) - Salary: $80000.0, Specializes in Python, Leading 3 projects亲手试试
import 'employee.dart';
void main() {
// TODO: 创建一个 Employee 对象,name 为 'Alice',salary 为 50000.0,id 为 101
// TODO: 创建一个 Manager 对象,name 为 'Bob',salary 为 75000.0,id 为 102,teamSize 为 8
// TODO: 创建一个 Developer 对象,name 为 'Carol',salary 为 65000.0,id 为 103,language 为 'Dart'
// TODO: 创建一个 TeamLead 对象,name 为 'David',salary 为 80000.0,id 为 104,language 为 'Python',projectCount 为 3
// TODO: 打印每位员工的 getDetails(),每行一个
}
面向对象编程中的所有课
自己练习: Dart 在线编译器