zoukankan      html  css  js  c++  java
  • 浅谈C# 多态的魅力(虚方法,抽象,接口实现)(转)

    我们都知道,喜鹊(Magpie)、老鹰(Eagle)、企鹅(Penguin)都是属于鸟类,我们可以根据这三者的共有特性提取出鸟类(Bird)做为父类,喜鹊喜欢吃虫子,老鹰喜欢吃肉,企鹅喜欢吃鱼。

    创建基类Bird如下,添加一个虚方法Eat():

    /// <summary>
        /// 鸟类:父类
        /// </summary>
        public class Bird
        {
            /// <summary>
            /// 吃:虚方法
            /// </summary>
            public virtual void Eat()
            {
                Console.WriteLine("我是一只小小鸟,我喜欢吃虫子~");
            }
        }

    创建子类Magpie如下,继承父类Bird,重写父类Bird中的虚方法Eat():

     /// <summary>
        /// 喜鹊:子类
        /// </summary>
        public  class Magpie:Bird
        {
            /// <summary>
            /// 重写父类中Eat方法
            /// </summary>
            public override void Eat()
            {
                Console.WriteLine("我是一只喜鹊,我喜欢吃虫子~");
            }
        } 

    建一个子类Eagle如下,继承父类Bird,重写父类Bird中的虚方法Eat():

     /// <summary>
        /// 企鹅:子类
        /// </summary>
        public  class Penguin:Bird
        {
            /// <summary>
            /// 重写父类中Eat方法
            /// </summary>
            public override void Eat()
            {
                Console.WriteLine("我是一只小企鹅,我喜欢吃鱼~");
            }
        }

    到此,一个基类,三个子类已经创建完毕,接下来我们在主函数中来看下多态是怎样体现的。

    static void Main(string[] args)
        {
            //创建一个Bird基类数组,添加基类Bird对象,Magpie对象,Eagle对象,Penguin对象
            Bird[] birds = { 
                           new Bird(),
                           new Magpie(),
                           new Eagle(),
                           new Penguin()
            };
            //遍历一下birds数组
            foreach (Bird bird in birds)
            {
                bird.Eat();
            }
            Console.ReadKey();
        }
  • 相关阅读:
    Delphi Try Except 实例
    如何有效地让一个“ParentFont = False”子控件使用与父母相同的字体名称?
    WPF的本质:数据和行为
    WPF-触发器
    WPF TextBox 验证输入
    wpf数据绑定更新通知
    asp.net *.ashx类型的文件使用说明
    asp.net 定时间点执行任务的简易解决办法
    asp.net 页面延时五秒,跳转到另外的页面
    Asp.net 基于Cookie简易的权限判断
  • 原文地址:https://www.cnblogs.com/qq4004229/p/3135787.html
Copyright © 2011-2022 走看看