编写一个控制台程序,实现类的继承,基类实现员工的基本信息属性,子类实现员工的基本技能,然后在主程序调用基类和子类实现存储和检索该员工的信息等,请通过以下抽象类抽象方法的方式实现该程序。
时间: 2024-05-14 10:18:31 浏览: 77
好的,以下是一个示例代码实现:
```csharp
using System;
using System.Collections.Generic;
// 定义员工基本信息的抽象类
public abstract class EmployeeBasicInfo
{
public string Name { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
public string Department { get; set; }
}
// 定义员工技能的抽象类
public abstract class EmployeeSkill
{
public string SkillName { get; set; }
public int SkillLevel { get; set; }
}
// 定义员工抽象类,继承自基本信息和技能抽象类
public abstract class Employee : EmployeeBasicInfo
{
public List<EmployeeSkill> Skills { get; set; }
// 定义抽象方法,用于输出员工信息
public abstract void PrintInfo();
}
// 定义程序入口类
class Program
{
// 定义员工列表
static List<Employee> employees = new List<Employee>();
static void Main(string[] args)
{
// 创建子类实例
var developer = new Developer()
{
Name = "张三",
Age = 30,
Gender = "男",
Department = "研发部",
Skills = new List<EmployeeSkill>()
{
new EmployeeSkill() { SkillName = "C#", SkillLevel = 5 },
new EmployeeSkill() { SkillName = "Java", SkillLevel = 4 }
}
};
// 添加到员工列表
employees.Add(developer);
// 输出员工信息
developer.PrintInfo();
// 等待用户输入
Console.ReadLine();
}
}
// 定义子类,继承自员工抽象类,实现输出员工信息的方法
public class Developer : Employee
{
public override void PrintInfo()
{
Console.WriteLine($"姓名:{Name}");
Console.WriteLine($"年龄:{Age}");
Console.WriteLine($"性别:{Gender}");
Console.WriteLine($"部门:{Department}");
Console.WriteLine("技能:");
foreach (var skill in Skills)
{
Console.WriteLine($"{skill.SkillName},熟练程度:{skill.SkillLevel}");
}
}
}
```
这个示例中,我们定义了三个抽象类:员工基本信息抽象类、员工技能抽象类和员工抽象类。员工抽象类继承自基本信息和技能抽象类,并定义了一个抽象方法 `PrintInfo()`,用于输出员工信息。这个抽象方法需要在子类中实现。
我们还定义了一个子类 `Developer`,继承自员工抽象类。在这个子类中,我们实现了抽象方法 `PrintInfo()`,输出了该员工的基本信息和技能信息。在程序入口类中,我们创建了一个 `Developer` 实例,并将其添加到员工列表中。最后,我们调用了这个实例的 `PrintInfo()` 方法,输出了员工信息。
阅读全文