CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  分析与设计

面向对象中多态的问题

楼主diamondtiger(醉风云)2006-03-03 19:59:02 在 .NET技术 / 分析与设计 提问

有谁知道多态在c++中的作用和意义呢? 问题点数:20、回复次数:9Top

1 楼singlepine(小山)回复于 2006-03-04 21:37:41 得分 20

比如动物都会咬,狗咬,猫咬,你可能会只在一个抽象类中写一个咬这么个虚拟方法,然后建狗类,猫类,这些类继承动物类,然后在狗类,猫类中重写咬这个方法分别实现猫咬和狗咬即可。便于扩展,如现在又多了个猪,那只需要建立一个猪类,继承重写咬方法就可以给猪类实现一个猪咬。  
  参考代码,以多边形重写面积为例  
   
  using   System;  
  class   TestClass    
  {  
        public   class   Dimensions    
        {  
              public   const   double   pi   =   Math.PI;  
              protected   double   x,   y;  
              public   Dimensions()    
              {  
              }  
              public   Dimensions   (double   x,   double   y)    
              {  
                    this.x   =   x;  
                    this.y   =   y;  
              }  
   
              public   virtual   double   Area()    
              {  
                    return   x*y;  
              }  
        }  
   
        public   class   Circle:   Dimensions    
        {  
              public   Circle(double   r):   base(r,   0)    
              {  
              }  
   
              public   override   double   Area()    
              {    
                    return   pi   *   x   *   x;    
              }  
        }  
   
        class   Sphere:   Dimensions    
        {  
              public   Sphere(double   r):   base(r,   0)    
              {  
              }  
   
              public   override   double   Area()  
              {  
                    return   4   *   pi   *   x   *   x;    
              }  
        }  
   
        class   Cylinder:   Dimensions    
        {  
              public   Cylinder(double   r,   double   h):   base(r,   h)    
              {  
              }  
   
              public   override   double   Area()    
              {  
                    return   2*pi*x*x   +   2*pi*x*y;    
              }  
        }  
   
        public   static   void   Main()      
        {  
              double   r   =   3.0,   h   =   5.0;  
              Dimensions   c   =   new   Circle(r);  
              Dimensions   s   =   new   Sphere(r);  
              Dimensions   l   =   new   Cylinder(r,   h);  
              //   Display   results:  
              Console.WriteLine("Area   of   Circle       =   {0:F2}",   c.Area());  
              Console.WriteLine("Area   of   Sphere       =   {0:F2}",   s.Area());  
              Console.WriteLine("Area   of   Cylinder   =   {0:F2}",   l.Area());  
        }  
  }  
  Top

2 楼ixue(鹰,翔雪宇)回复于 2006-03-04 22:33:50 得分 0

哈哈。人咬呢?Top

3 楼zhanlinzhangna520(Jame)回复于 2006-03-06 15:30:21 得分 0

帮2楼顶一下,很通俗.Top

4 楼ilovems(我爱微软)回复于 2006-03-07 11:33:42 得分 0

人咬狗呢?Top

5 楼simonezhlx(大师父)回复于 2006-03-09 10:43:11 得分 0

一嘴毛,嗯,喜欢通俗的说法,本人好多概念是知道,就是不知道名词,比如这个多态,自己经常在基类里面定义虚方法。却不知道,有这个大名儿Top

6 楼aya331(菜菜小鸟)回复于 2006-03-09 21:57:17 得分 0

一楼说的不错,帮顶!Top

7 楼killerliu(越学越无知。。。。。-_-)回复于 2006-03-17 17:47:32 得分 0

通俗易懂。。。就是不要被狗咬到了。。Top

8 楼boblaile(爱在13月32)回复于 2006-03-18 17:43:07 得分 0

2楼说的好有意思!Top

9 楼ywhcsdn(夜枫)回复于 2006-03-20 11:15:24 得分 0

哈哈,有意思,补充一下,多态里面还有个隐藏,如果不想使用猫类中的咬,可以把它隐藏起来,而直接使用动物类中的咬Top

相关问题

  • 谈谈对面向对象中“多态”的理解
  • 关于面向对象的多态性问题
  • C++和面向对象的一点看法,欢迎讨论 (谈多态 1)
  • 面向对象设计中,对象划分到多细合适?谢谢
  • 讨论:面向对象与多线程
  • Web中的面向对象问题。
  • 请教:如何理解JS中的面向对象特征?(面向对象程序设计高手请进)
  • 如何培养自己面向对象开发的思维和在开发中做到真正面向对象
  • 面向对象比面向过程简单多了,请进
  • 关于多层架构和面向对象的疑问

关键词

  • dimensions
  • 狗
  • double
  • 重写
  • sphere
  • 猫
  • pi
  • circle
  • cylinder
  • area

得分解答快速导航

  • 帖主:diamondtiger
  • singlepine

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo