(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 12:47:08 浏览: 116
好的,以下是符合您要求的代码实现:
```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("我的名字是{0},我今年{1}岁了。", Name, Age);
}
}
public class Adult : Person
{
public override void Eat()
{
Console.WriteLine("我正在吃饭");
}
}
public class Baby : Person
{
public override void Eat()
{
Console.WriteLine("我正在喝奶");
}
}
class Program
{
static void Main(string[] args)
{
Person adult = new Adult();
adult.Name = "张三";
adult.Age = 25;
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 = 30;
adult2.Eat();
adult2.Speak();
Baby baby2 = new Baby();
baby2.Name = "赵六";
baby2.Age = 2;
baby2.Eat();
baby2.Speak();
Console.ReadLine();
}
}
```
输出结果为:
```
我正在吃饭
我的名字是张三,我今年25岁了。
我正在喝奶
我的名字是李四,我今年1岁了。
我正在吃饭
我的名字是王五,我今年30岁了。
我正在喝奶
我的名字是赵六,我今年2岁了。
```
在这个例子中,我们定义了一个基类 `Person`,并在其中定义了属性 `Name` 和 `Age`,以及虚方法 `Eat()` 和非虚方法 `Speak()`。然后,我们创建了两个派生类 `Adult` 和 `Baby`,并在其中分别重写了 `Eat()` 方法。最后,在主类 `Program` 的 `Main()` 方法中创建了 `Adult` 和 `Baby` 类的实例,并分别测试了它们的 `Eat()` 和 `Speak()` 方法。
阅读全文