Menu
CoddyTech

回顾:员工层次结构

本课属于 Coddy Dart 学习旅程的“面向对象编程”单元。第 42 课,共 110 课。

challenge icon

挑战

简单

我们来构建一个完整的员工层级系统,把本章介绍的所有继承概念结合起来。你将创建一个员工基类,并扩展出具有各自独特行为的专门角色。

你将把代码整理到两个文件中:

  • 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 在线编译器