码迷,mamicode.com
首页 > 其他好文 > 详细

4类多态

时间:2017-04-15 20:05:01      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:接下来   out   base   bsp   oat   转换   使用   超级   string   


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


    首先来看下大图:


   

       技术分享



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


一。简单介绍几种多态


    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,重写


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


          比如:一个类继承一个窗口,然后重写它button的点击事件:

 

         技术分享


           


    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类多态

标签:接下来   out   base   bsp   oat   转换   使用   超级   string   

原文地址:http://www.cnblogs.com/zhchoutai/p/6715388.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!