我是面向对象编程的新手。虽然我明白什么是多态,但我无法得到它的真正用途。我可以有不同名称的函数。为什么我应该尝试在我的应用程序中实现多态性。
经典答案:想象一个基类Shape
。它暴露了一个GetArea
方法。想象一个Square
类和一个Rectangle
类,以及一个Circle
班级。而不是创建单独的GetSquareArea
, GetRectangleArea
and GetCircleArea
方法,您只需在每个派生类中实现一个方法。您不必知道哪个确切的子类Shape
你使用,你只需调用GetArea
然后你就得到了结果,无论它是哪种具体类型。
看看这段代码:
#include <iostream>
using namespace std;
class Shape
{
public:
virtual float GetArea() = 0;
};
class Rectangle : public Shape
{
public:
Rectangle(float a) { this->a = a; }
float GetArea() { return a * a; }
private:
float a;
};
class Circle : public Shape
{
public:
Circle(float r) { this->r = r; }
float GetArea() { return 3.14f * r * r; }
private:
float r;
};
int main()
{
Shape *a = new Circle(1.0f);
Shape *b = new Rectangle(1.0f);
cout << a->GetArea() << endl;
cout << b->GetArea() << endl;
}
这里需要注意的一件重要事情是 - 您不必知道您正在使用的类的确切类型,只需知道基类型,您就会得到正确的结果。这在更复杂的系统中也非常有用。
祝学习愉快!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)