zoukankan      html  css  js  c++  java
  • c# 多态

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    namespace ConsoleExample
    {
        class 哥
        {
            public virtual void draw()
            {
                Console.WriteLine("哥来做事,你们可以偷偷乐了");
            }
            public void ff()
            { 
                Console.WriteLine("哥的FF方法");
            }
        }
        class 小弟 : 哥
        {
            public override void draw()
            {
                Console.WriteLine("小弟不用哥的,小弟要单干");
                //base.draw();
            }
            public new void ff()
            {
                Console.WriteLine("小第的FF方法");
            }
        }
        class 小妹 : 哥
        {
            public new void ff()
            {
                Console.WriteLine("小妹的FF方法");
            }
        }
    }
     public static void Main()

      { 

               哥[] father = new 哥[3];

                father[0] = new 哥();
                father[1] = new 小弟();
                father[2] = new 小妹();
                foreach (哥 t in father)
                {
                    t.draw();    //调用实际的重写对象的方法(子类里面,如果override 了draw方法,调用它,没有就调用父类的draw方法)           
                }
                小弟 tt = new 小弟();
                tt.draw();      //调用实际的重写对象的方法(子类里面,如果override 了draw方法,调用它,没有就调用父类的draw方法)
                tt.ff();        //调用本类的方法(小第里面的方法)
                哥 bb = tt;
                bb.draw();      //调用实际的重写对象的方法(子类里面,如果override 了draw方法,调用它,没有就调用父类的draw方法)
                bb.ff();        //调用本类的方法 (哥里的方法)
                哥 cc = new 小妹();
                cc.draw();      //调用实际的重写对象的方法(子类里面,如果override 了draw方法,调用它,没有就调用父类的draw方法)
                cc.ff();        //本类的方法(哥里的方法,是非虚方法) 
                哥 gg = new 小弟();
                ((小弟)gg).draw();//调用实际的重写对象的方法(类小弟里面,如果override 了draw方法,调用它,没有就调用父类的draw方法)
                ((小弟)gg).ff();  //类小弟的方法(base里的方法)

     }

    结果如下:

     

  • 相关阅读:
    ESFramework Demo -- 动态组及群聊Demo(附源码)
    反射整理学习
    JavaScript 每周导读
    SQLSERVER 中的 with锁级别
    代码细节重构:请对我的代码指手划脚
    SQLServer查询死锁语句
    模块加载系统 v16
    数据结构之排序算法C#实现
    浅谈操作系统对内存的管理
    如何编写可维护的面向对象JavaScript代码
  • 原文地址:https://www.cnblogs.com/pan11jing/p/2455092.html
Copyright © 2011-2022 走看看