原则:
1、所谓多态,是指在程序运行的时候确定真正的对象类型
使用方法,用一个父类的指针,可以指向所有的子类对象,在程序执行的时候,确定下来具体的哪一个子类,此后这个父类指针便具体化为相对应的子类的指针,去调用想对应的子类的所有可用资源
class Base{}
class A:public Base
{
public:
void fun(){cout << "AAA" <<endl;}
void A_fun(){}
}
class C:public Base
{
public:
void fun2(){}
void B_fun(){cout << "AAA" <<endl;}
}
Base * pBase = null;
pBase = new A;
pBase->fun(); //AAA
pBase = new B;
pBase->fun(); //BBB
在程序执行的时候确定指针所指向的具体对象类型,从而调用对应的函数,这常常用于各个派生类定义了相同的函数名,但函数的具体实现不同,使用这种多态,就可以用统一的形式调用不同的函数执行,比如在循环中;
2、C#中的接口正是把这些同名的函数,属性抽象出来,定义成个抽象类一样的东西,接口只给出声明,具体实现在每个具体的类中来做,类派生于这个接口,所以接口具有了父类的概念,所以具有多态的概念
接口类似父类指针,因为接口是个引用类型,相对应于C++中的指针,父类指针可以指向任何子类对象,调用成员的时候,根据所指的实际对象来调用,这就是所谓的多态。接口在这方面稍有限制,是只能调用接口中给出的方法,属性,而真正的多态,可以完全调用所指的实际对象的所有可用资源,因为多态发生之后,完全认为它成为一个确定的子类类型指针