尽管一直在说OOP,但说实话还不是真正的理解,面向对象的三个基本特性继承、封装、多态,前两个性质曾经

有接触听的比較多还好理解,以下主要介绍一下第三个特性——多态。

1. 定义

    同一操作作用于不同的对象,能够有不同的解释,产生不同的结果,这就是多态。一种接口多种实现。

2. 实现

    通过派生类覆写基类中的虚函数型方法来实现的

3. 种类

    编译时多态性:重载实现

    执行时多态性:覆写虚成员实现

4. 重载和覆写的差别

    重载(两必须一能够):方法名必须同样,參数列表必须不同,返回值类型能够不同

    覆写(三同样):方法名,參数列表,返回值类型必须同样

5. 用到了向上转型的功能

6. 多态的重要性

    设计模式中用到了大量的多态

7多态和继承的差别

    多态是父类使用子类的方法,继承是子类使用父类的方法

8.以下是学习C#实现播放DVD和VCD敲的样例,大家能够结合我写的凝视好好理解一下

7.	using System;
8. using System.Collections.Generic;
9. using System.Linq;
10. using System.Text;
11. using System.Threading.Tasks;
12.
13. namespace 多态的样例2
14. {
15. class Program
16. {
17. static void Main(string[] args)
18. {
19. //DVD dvd = new DVD(); //尽管实现了多态但调用方法未实现多态
20. //Console.WriteLine(dvd.PlayVideo());
21. //VCD vcd = new VCD();
22. //Console.WriteLine(vcd.PlayVideo());
23. Program tt = new Program(); //实例化过程
24. tt.PlayVideo();
25. }
26. public void PlayVideo()
27. {
28. VideoShow vw; //调用了多态
29. vw = new DVD();
30. Console.WriteLine(vw.PlayVideo());
31. vw = new VCD();
32. Console.WriteLine(vw.PlayVideo());
33. }
34. }
35. public abstract class VideoShow //定义抽象超类,全部派生于抽象类的派生类必须实现其方法
36. {
37. public abstract string PlayVideo();
38. }
39. public class VCD : VideoShow
40. {
41. public override string PlayVideo() //派生类
42. {
43. return "正在播放VCD";
44. }
45. }
46. public class DVD : VideoShow
47. {
48. public override string PlayVideo()
49. {
50. return "正在播放DVD";
51. }
52. }

OOP中的多态的更多相关文章

  1. 深入理解OOP(第一天):多态和继承(初期绑定和编译时多态)

    在本系列中,我们以CodeProject上比较火的OOP系列博客为主,进行OOP深入浅出展现. 无论作为软件设计的高手.或者菜鸟,对于架构设计而言,均需要多次重构.取舍,以有利于整个软件项目的健康构建 ...

  2. javascript面向对象系列第四篇——OOP中的常见概念

    前面的话 面向对象描述了一种代码的组织结构形式——一种在软件中对真实世界中问题领域的建模方法.本文将从理论层面,介绍javascript面向对象程序程序(OOP)中一些常见的概念 对象 所谓对象,本质 ...

  3. 【原创】SystemVerilog中的多态和虚方法

    封装可以隐藏实现细节,使代码模块化,继承可以扩展已经存在的代码模块,目的都是为了代码重用.多态是为了实现接口的重用.在SystemVerilog中,子类和父类之间多个子程序使用同一个名字的现象称为Sy ...

  4. 13、java中的多态

    1,多态的体现 父类的引用指向了自己的子类对象. 父类的引用也可以接收自己的子类对象.2,多态的前提 必须是类与类之间有关系.要么继承,要么实现. 通常还有一个前提:存在覆盖. 3,多态的好处 多态的 ...

  5. java中实现多态的机制是什么?

    多态性是面向对象程序设计代码重用的一个重要机制,我们曾不只一次的提到Java多态性.在Java运行时多态性:继承和接口的实现一文中,我们曾详细介绍了Java实现运行时多态性的动态方法调度:今天我们再次 ...

  6. C#中区别多态、重载、重写的概念和语法结构

    C#中区别多态.重载.重写的概念和语法结构 重写是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override. 格式: 基类中: public virtual ...

  7. 转载:C#中的多态

    原文地址 http://www.cnblogs.com/jhxk/articles/1644018.html  感谢博主分享! 之前看到过类似的问题:如果面试时主考官要求你用一句话来描述多态,尽可能的 ...

  8. c++中虚多态的实现机制

    c++中虚多态的实现机制 參考博客:http://blog.csdn.net/neiloid/article/details/6934135 序言 证明vptr指针存在 无继承 单继承无覆盖 单继承有 ...

  9. js oop中的三种继承方法

    JS OOP 中的三种继承方法: 很多读者关于js opp的继承比较模糊,本文总结了oop中的三种继承方法,以助于读者进行区分. <继承使用一个子类继承另一个父类,子类可以自动拥有父类的属性和方 ...

随机推荐

  1. ueditor插件 -- 插入填空题

    插入填空题,一个看似小小的需求,但是却是折腾了很9.主要产品那边的要求,空格上面要标有序号,并且再页面当中能够同步空格答案列表. 1.ueditor插件 插件入门,官方的例子还是很简单直接的,对于我们 ...

  2. php composer包管理工具

    一 . 包管理工具 你在Centos上装工具的时候直接yum -y install xx 比你去rpm -ivh xx.rpm 是不是爽很多呢? composer 就是安装php 代码的一个类似工具. ...

  3. sqlserver 常用函数(转)

    1.字符串函数 : len(expression) 返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格. datalength(Char_expr) 返回字符串包含字符数,但不包含后面的 ...

  4. MVC3 分页Helper

    利用mvc3实现分页效果.效果图如下: 直接拷代码: 首页添加一个Helper的类(命名空间为System.Web.Mvc;). public static HtmlString ShowPageNa ...

  5. 关于 实时推送技术--WebSocket的 知识分享

    今天学习了关于WebSocket的知识,觉得挺有用的,在这记录一下,也和大家分享一下!!有兴趣的可以看看哦 WebSocket简介 Web领域的实时推送技术,也被称作Realtime技术.这种技术要达 ...

  6. Flex整合Spring

    工程需要整合Spring和Flex,在网上众多方法中找到了下面这种,记录留存. 个人认为该方法更适合在已有Spring框架的工程中添加Flex时使用,对原工程内容(主要指配置文件)改动较小. 1.添加 ...

  7. onActivityResult不起作用?可能是和你的launchMode有关!

    昨天在自己的项目中用到了onActivityResult()方法获得activity的返回值.我从Activity01通过 startActivityForResult启动了Activity02和Ac ...

  8. Unix/Linux环境C编程入门教程(11) 开发环境搭建VMWare虚拟安装之虚拟化检测

    常开启虚拟化技术.如果你的主板是最新的,它在冷启动后能够检测到配置变化.每当我改变我的主板上的VT设置,它都会自动推迟下次重新启动生效.如何确定VT已经开启或禁用? 如图表示成功开启了VT. F10 ...

  9. Trunk Club:颠覆男士时装零售的创业公司_第1页_福布斯中文网

    Trunk Club:颠覆男士时装零售的创业公司_第1页_福布斯中文网 Trunk Club:颠覆男士时装零售的创业公司

  10. Data Visualization 课程 笔记2

    2-D Graphics vector graphics : the graphics that used for drawing shapes with vertices, strokes and ...