c#编写一个控制台程序,在该程序中构造一个Person基类,再分别构造Student和Teacher派生类,要求具有不同的特征和行为,能通过静态成员自动记录由不同派生类创建的对象的人数。
时间: 2024-03-13 17:43:14 浏览: 55
kechengsheji.rar_4 3 2 1
好的,这是一个比较典型的面向对象编程的例子。我会给你提供一个示例代码,你可以在本地编译运行它。
```csharp
using System;
class Person
{
private static int count = 0;
protected string name;
protected int age;
public Person(string name, int age)
{
this.name = name;
this.age = age;
count++;
}
public virtual void PrintInfo()
{
Console.WriteLine("Name: {0}, Age: {1}", name, age);
}
public static int GetCount()
{
return count;
}
}
class Student : Person
{
private string major;
public Student(string name, int age, string major) : base(name, age)
{
this.major = major;
}
public override void PrintInfo()
{
Console.WriteLine("Name: {0}, Age: {1}, Major: {2}", name, age, major);
}
}
class Teacher : Person
{
private string subject;
public Teacher(string name, int age, string subject) : base(name, age)
{
this.subject = subject;
}
public override void PrintInfo()
{
Console.WriteLine("Name: {0}, Age: {1}, Subject: {2}", name, age, subject);
}
}
class Program
{
static void Main(string[] args)
{
Person p1 = new Student("Tom", 20, "Computer Science");
Person p2 = new Student("Jerry", 21, "Mathematics");
Person p3 = new Teacher("John", 30, "English");
Person p4 = new Teacher("Mary", 35, "History");
p1.PrintInfo();
p2.PrintInfo();
p3.PrintInfo();
p4.PrintInfo();
Console.WriteLine("Total Persons: {0}", Person.GetCount());
}
}
```
在这个示例程序中,我们定义了一个基类 `Person`,它包含了两个成员变量 `name` 和 `age`,以及一个静态成员变量 `count`。在构造函数中,我们对 `count` 进行自增操作,以实现统计不同派生类创建的对象的人数的功能。`Person` 还定义了一个虚函数 `PrintInfo`,用于输出对象的信息。
我们还定义了两个派生类 `Student` 和 `Teacher`,它们分别包含了特有的成员变量 `major` 和 `subject`,并重载了基类的虚函数 `PrintInfo`,以实现不同的输出效果。
在 `Main` 函数中,我们通过创建对象的方式来演示了不同类的功能,并调用了静态函数 `Person.GetCount` 输出了创建的对象总数。
阅读全文