首页 > 代码库 > 4类多态

4类多态


    在软考学习的时候,才发现多态不仅仅只有我认识的那么一两种,很多用过的形式原来它们也是多态呀。


    首先来看下大图:


   

      



         接下来本文将一一举例这些多态,并在末尾做个小对比。


一,简介几种多态


    1,泛型


                这个听起来比较高大上,但是大家都用过,例如:


 

        机房收费系统——组合查询中,为了尽可能抽出相同部分,使用T代替。还有转换成list的时候,在定义中指定List of T,使用时:


	 mylist = Entity.EntityConverter.convertToList(Of Entity.StuBaseInfo)(dt)

     2,模板


          这个在C++中见的很多,别的语言中还没有用过,所以就用C++举例了:

    

template <typename T>
T max(const T& lsh, const T& rhs) 
{
return (lsh > rhs) ? lsh : rhs;
}
//返回两个任意类型对象的最大值(对象),前提是该类型能够使用>
//运算符进行比较,并且返回值是bool类型。
//使用:
int a = 3; int b = 4;
cout << max(a, b) << endl;
float c = 2.4; float d = 1.2;
cout << max(c, d) << endl;

//输出结果为:
//4
//2.4



           同样是使用时指定T,但是泛型比模板多了对参数的检查功能。

  

    3,重写


           面向对象中,最常见的就是一个子类继承一个父类,然后重写它的方法了


          例如:一个类继承一个窗体,然后重写它按钮的点击事件:

 

        


           


    4,重载


            适用于一个功能有多个参数的情况:

        

           

	#include<iostream>
	#include<cstring>
	using namespace std;
	
	int myMax(int x,int y);	//比较两个整数
	char myMax(char first,char second);	//比较两个字符
	double myMax(double u,double v);  //比较两个小数
	char * myMax(char * frist,char * second);   //比较两个字符串
	
	int main()  //主函数
	{
		cout<<"in 3 and 5,the max number is "<<myMax(3,5)<<endl;  //调用比较整数的函数
		cout<<"in c and t the max char is:"<<myMax('c','t')<<endl;   //调用比较字符的函数
		cout<<"in 3.1 and -5.3,the max double number is:"<<myMax(3.1,-5.3)<<endl;  //调用比较浮点数的函数
		cout<<"in what and where the max string is:"<<myMax("what","where")<<endl;  //调用比较字符的函数
	
	}
	
	
	//下面为函数体
	
	int myMax(int x,int y)  //比较两个整数
	{
		if(x>y) return x;
		else return y;
	}
	
	char myMax(char first,char second)  //比较两个字符
	{
		if(first>second) return first;
		else return second;
	
	}
	
	double myMax(double u,double v)  //比较两个小数
	{
		if(u>v) return u;
		else return v;
	}
	
	char * myMax(char * first,char * second)   //比较两个字符串
	{
		if(strcmp(first,second)>0) return first;
		else return second;
	
	}


     

   5,父类引用指向子类对象


             超级熟悉了吧,设计模式中用的最多的,自我感觉不仅是用的最多的,也是最好用的,举个例子:


  

<span style="font-size:18px;">        Animal a=new Dog();  </span>

            


    二,小结


    





       


         





     


   

4类多态