(1) Person类中有属性:姓名、年龄;有方法:Eat(),该方法为虚方法(virtual),其功能为输出“我正在吃...”,方法Speak(),该方法输出相应的姓名和年龄; (2) Adult类、Baby类是Person类的派生类,在Adult类中重写Eat()方法,其功能为输出“我正在吃饭”,在Baby类中重写Eat()方法,其功能为输出“我正在喝奶”; (3) 在主类的Main方法中创建Adult与Baby类的对象类测试这2个类的功能(使用Person类引用Adult对象,Baby对象,来分别调用Eat()、Speak()方法,再分别使用Adult对象,Baby对象调用Eat()和Speak()方法)。
时间: 2024-03-15 15:45:04 浏览: 38
以下是可以实现上述要求的C#代码示例:
```csharp
using System;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public virtual void Eat()
{
Console.WriteLine("我正在吃...");
}
public void Speak()
{
Console.WriteLine($"我叫{Name},今年{Age}岁。");
}
}
public class Adult : Person
{
public override void Eat()
{
Console.WriteLine("我正在吃饭。");
}
}
public class Baby : Person
{
public override void Eat()
{
Console.WriteLine("我正在喝奶。");
}
}
public class Program
{
static void Main(string[] args)
{
Person adult = new Adult();
adult.Name = "张三";
adult.Age = 30;
adult.Eat();
adult.Speak();
Person baby = new Baby();
baby.Name = "李四";
baby.Age = 1;
baby.Eat();
baby.Speak();
Adult adult2 = new Adult();
adult2.Name = "王五";
adult2.Age = 40;
adult2.Eat();
adult2.Speak();
Baby baby2 = new Baby();
baby2.Name = "赵六";
baby2.Age = 2;
baby2.Eat();
baby2.Speak();
Console.ReadLine();
}
}
```
在上述代码中,Person类定义了姓名和年龄属性,以及Eat()和Speak()方法。Adult类和Baby类分别继承自Person类,在Adult类中重写了Eat()方法,输出“我正在吃饭”,在Baby类中重写了Eat()方法,输出“我正在喝奶”。
在Main方法中,首先创建了一个Adult对象和一个Baby对象,并将它们都赋值给Person类型的变量。然后分别调用了它们的Eat()和Speak()方法。接着创建了一个Adult对象和一个Baby对象,并直接调用它们的Eat()和Speak()方法。
运行上述代码,输出结果为:
```
我正在吃饭。
我叫张三,今年30岁。
我正在喝奶。
我叫李四,今年1岁。
我正在吃饭。
我叫王五,今年40岁。
我正在喝奶。
我叫赵六,今年2岁。
```
阅读全文