zoukankan      html  css  js  c++  java
  • OOP中的多态

        尽管一直在说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.	    }
    




  • 相关阅读:
    一篇进入ABB机器人世界-以前学习视频的笔记
    说说常用算子select_shape的特性一些使用
    简单说说双目立体视觉的原理(后面有机会再讲讲应用)
    Halcon算子大全目录
    【转载】C# SQLite 数据库操作
    【重磅】机器视觉前沿的研究机构(国内篇)
    【重磅】机器视觉前沿的研究机构(国外篇)
    机器视觉相关中英文词汇
    Java中print、printf、println的区别
    iTerm2相关设置与美化
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4216477.html
Copyright © 2011-2022 走看看