
多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphism),字面意思多种形状。
多态的目的:多口重用
定义一个People类
#include <iostream>
class People
{
#pragma mark - Init
public:
People();
~People();
#pragma mark - Method
public:
virtual void ();
#pragma mark - get&set
public:
#pragma mark - Variable
private:
std::string name_;
std::string gender_;
int age_;
double hight_;
double weight_;
};
People.cpp
#include "People.h"
People::People()
{}
People::~People()
{}
void People::Speak()
{
std::cout << "I'm a people" << std::endl;
}
Yellowpeople.h
#include "People.h"
class YellowPeople : public People //继承
{
public:
virtual void ();
void shout();
};
Yellowpeople.cpp
#include "YellowPeople.h"
void YellowPeople::Speak()
{
std::cout << "I'm a yellow people" <<std::endl;
}
Whitepeople.h
#include "People.h"
class WhitePeople : public People
{
public:
virtual void ();
};
Whitepeople.cpp
#include "WhitePeople.h"
void WhitePeople::Speak()
{
std::cout << "I'm a white people" <<std::endl;
}
Blackpeople.h
#include "People.h"
class BlackPeople : public People
{
public:
virtual void ();
};
Blackpeople.cpp
#include "BlackPeople.h"
void BlackPeople::Speak()
{
std::cout << "I'm a black people" << std::endl;
}
main.cpp
#include <iostream>
#include "YellowPeople.h"
#include "WhitePeople.h"
#include "BlackPeople.h"
using namespace std;
void test(People &obj) //使用基类People中的Speak()函数
{
obj.Speak();
}
int main()
{
People people;
YellowPeople yellow;
WhitePeople white;
BlackPeople black;
people.Speak();
yellow.Speak();
yellow.Speak();
white.Speak();
black.Speak();
test(people); //体现了多态
test(yellow);
test(white);
test(black);
return 0;
}
输入结果为:
I'm a people
I'm a yellow people
I'm a white people
I'm a black people
I'm a people
I'm a yellow people
I'm a white people
I'm a black people




近期评论