开发工具与关键技术: Visual Studio / C++
作者:何文涛
撰写时间:2019-6-15
多态性是指一个方法,多种意义;或着界面相同,多种实现。
多态使用方法:
基类:
类型 类名
{
同样的 类型 方法名();
}
派生类:
类型 类名:继承方式 基类类名
{
同样的 类型 方法名();
}
而需要访问多态的话,main主函数就可以通过指针来访问不同
类里面的多态,例如:
void main()
{
A A_op;
B B_op;
A *p;
p = &A_op; p->who();
p = &B_op; p->who();
}
由上所示,定义两个类其中类A是类B的基类,定义了两个类的对象
并且用基类指针p来访问派生类,这就构成了多态性。
下面就举了个多态应用的简单例子:
类定义部分:
class Ased
{
public:
Ased(int x) { a = x; }
void who() { cout << “Ased:” << a << endl; }//多态
protected:
int a;
};
class Bsed:public Ased
{
public:
Bsed(int x, int y) :Ased(x) { b = y; }
void who() { cout << “Bsed:” << a << “:” << b << endl; }//多态
protected:
int b;
};
定义了两个类,类Ased和类Bsed,其中Ased是类Bsed的基类,两个类分别定义了同样的方法who();这样一来就构成了多态性。
并且两个类都构造了变量,基类Ased构造一个int的x,把它赋值了给私有的int a,派生类Bsed则是构造了两个变量,并且还继承了基类的x,并把y给了私有成员 b。
主函数部分:
void main()
{
Ased A(12);
Bsed B(21,31);
Ased *p;
p = &A; //基类指针指向基类
p->who(); //通过基类指针调用成员函数
p = &B; //基类指针指向派生类
p->who(); //通过基类指针调用成员函数
B.who(); //通过对象调用成员函数
}
main函数这里定义了两个类的对象,并且进行了值传递,然后在定义了基类指针p,并指向了基类Ased然后通过指针p来访问基类Ased,
然后通过指向派生类的基类指针进行访问类Bsed,从而构成了多态性
输出结果:
第一个结果:是由基类指针指向基类,所以访问的是基类Ased的方法。
第二个结果:基类指针指向派生类,由于继承原因所以输出的是派生类Bsed的第一个数据。
第三个结果:是由派生类直接的对象来进行访问,所以理所当然的是类Bsed的方法。