Person类中有属性:姓名、年龄;有方法:Eat(),该方法为虚方法(virtual),其功能为输出“我正在吃...”,方法Speak(),该方法输出相应的姓名和年龄; (2)Adult类、Baby类是Person类的派生类,在Adult类中重写Eat()方法,其功能为输出“我正在吃饭”,在Baby类中重写Eat()方法,其功能为输出“我正在喝奶”;
时间: 2024-03-15 14:47:17 浏览: 46
好的,以下是符合您要求代码实现:
```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("我正在喝奶");
}
}
```
在这个例子中,我们定义了一个基类 `Person`,并在其中定义了属性 `Name` 和 `Age`,以及虚方法 `Eat()` 和非虚方法 `Speak()`。然后,我们创建了两个派生类 `Adult` 和 `Baby`,并在其中分别重写了 `Eat()` 方法,以实现不同的输出。
相关问题
请用代码解释一下类的封装,继承和多态
类的封装:
封装是面向对象编程中的一个重要概念,它指的是将数据和行为封装在一个单独的实体中,以保护数据不被外部直接访问和修改。在 C++ 中,可以使用访问修饰符(public、private、protected)来控制类的成员的访问权限,从而实现封装。
例如,下面是一个简单的类的定义,其中包含了一个私有成员变量和一个公有成员函数:
```
class Person {
private:
int age;
public:
void setAge(int a) {
age = a;
}
int getAge() {
return age;
}
};
```
在这个例子中,age 是一个私有成员变量,只能通过公有成员函数 setAge 和 getAge 来访问和修改。这样就可以保护 age 的数据安全性。
继承:
继承是面向对象编程中的另一个重要概念,它指的是一个类可以从另一个类中继承属性和方法。在 C++ 中,可以使用关键字 public、protected、private 来指定继承的访问权限。
例如,下面是一个简单的继承示例:
```
class Animal {
public:
void eat() {
cout << "Animal is eating" << endl;
}
};
class Dog : public Animal {
public:
void bark() {
cout << "Dog is barking" << endl;
}
};
```
在这个例子中,Dog 类继承了 Animal 类的 eat() 方法,并且新增了一个 bark() 方法。这样,Dog 类就可以使用 Animal 类的 eat() 方法,同时也可以新增自己的方法。
多态:
多态是面向对象编程中的另一个重要概念,它指的是同一个方法可以在不同的对象上产生不同的行为。在 C++ 中,可以通过虚函数和纯虚函数来实现多态。
例如,下面是一个简单的多态示例:
```
class Shape {
public:
virtual void draw() {
cout << "Shape is drawing" << endl;
}
};
class Circle : public Shape {
public:
void draw() {
cout << "Circle is drawing" << endl;
}
};
class Rectangle : public Shape {
public:
void draw() {
cout << "Rectangle is drawing" << endl;
}
};
```
在这个例子中,Shape 类定义了一个虚函数 draw(),Circle 类和 Rectangle 类分别重写了这个虚函数。当调用 draw() 方法时,会根据对象的实际类型来决定调用哪个版本的 draw() 方法,从而实现多态。
阅读全文