c#编写一个控制台程序,在该程序中构造一个Person基类,再分别构造Student和Teacher派生类,要求具有不同的特征和行为,能通过静态成员自动记录由不同派生类创建的对象的人数。
时间: 2024-03-11 08:51:25 浏览: 69
好的,以下是一个简单的实现:
```csharp
using System;
// 基类 Person
class Person {
public string Name { get; set; } // 姓名
public int Age { get; set; } // 年龄
}
// 派生类 Student
class Student : Person {
public int Grade { get; set; } // 年级
public static int Count { get; private set; } // 静态成员变量,记录 Student 对象的数量
public Student(string name, int age, int grade) {
Name = name;
Age = age;
Grade = grade;
Count++;
}
}
// 派生类 Teacher
class Teacher : Person {
public string Title { get; set; } // 职称
public static int Count { get; private set; } // 静态成员变量,记录 Teacher 对象的数量
public Teacher(string name, int age, string title) {
Name = name;
Age = age;
Title = title;
Count++;
}
}
class Program {
static void Main() {
// 创建对象
Student s1 = new Student("Tom", 18, 1);
Student s2 = new Student("Jerry", 17, 2);
Teacher t1 = new Teacher("Mike", 30, "Professor");
Teacher t2 = new Teacher("Jane", 35, "Associate Professor");
// 输出对象信息
Console.WriteLine("Student count: {0}", Student.Count);
Console.WriteLine("Teacher count: {0}", Teacher.Count);
Console.WriteLine("Student 1: {0}, {1} years old, Grade {2}", s1.Name, s1.Age, s1.Grade);
Console.WriteLine("Student 2: {0}, {1} years old, Grade {2}", s2.Name, s2.Age, s2.Grade);
Console.WriteLine("Teacher 1: {0}, {1} years old, Title {2}", t1.Name, t1.Age, t1.Title);
Console.WriteLine("Teacher 2: {0}, {1} years old, Title {2}", t2.Name, t2.Age, t2.Title);
// 等待用户按下任意键退出程序
Console.ReadKey();
}
}
```
这里也定义了一个基类 Person,以及两个派生类 Student 和 Teacher。可以通过静态成员变量 Student.Count 和 Teacher.Count 分别记录创建的 Student 和 Teacher 对象的数量。在 Student 和 Teacher 的构造函数中自动更新静态成员变量。最后在 Main 函数中演示了对象的创建和输出对象信息,并且等待用户按下任意键退出程序。
阅读全文