不同的对象可以调用相同名称的函数,并可导致完全不同的行为的现象称为( )。 A. 继承 B. 抽象 C. 封装 D. 多态性
时间: 2024-03-23 21:43:18 浏览: 15
D. 多态性。不同的对象可以调用相同名称的函数,并且可以导致完全不同的行为,这种现象称为多态性。多态性是面向对象编程的一个重要特性,它允许我们写出更加灵活、可扩展、可维护的代码。
多态性是通过虚函数和函数重写来实现的。在 C++ 中,如果一个类中定义了虚函数,那么它的子类可以重写这个虚函数,并且在运行时根据对象的实际类型来调用相应的函数。这种方式称为动态绑定,它允许我们在编写基类代码时,不需要关心子类的具体实现细节,从而实现了代码的高度抽象和可扩展性。
例如:
```c++
#include <iostream>
using namespace std;
class Animal {
public:
virtual void makeSound() {
cout << "Animal makes sound." << endl;
}
};
class Cat : public Animal {
public:
void makeSound() {
cout << "Cat meows." << endl;
}
};
class Dog : public Animal {
public:
void makeSound() {
cout << "Dog barks." << endl;
}
};
int main() {
Animal* animal1 = new Cat();
Animal* animal2 = new Dog();
animal1->makeSound(); // 输出 Cat meows.
animal2->makeSound(); // 输出 Dog barks.
return 0;
}
```
在上面的例子中,定义了一个 `Animal` 类作为基类,和两个子类 `Cat` 和 `Dog`。`Animal` 类中定义了一个虚函数 `makeSound()`,并在 `Cat` 和 `Dog` 中分别重写了这个函数。在 `main()` 函数中,分别创建了一个 `Cat` 对象和一个 `Dog` 对象,并将它们赋值给一个 `Animal` 类型的指针。在调用 `makeSound()` 函数时,由于它是虚函数,会根据对象的实际类型来进行动态绑定,从而输出不同的结果。这种现象就是多态性。