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里的方法)

 

 }

 

 

 

 

结果如下:

 

 

 

 

 

转载于:https://www.cnblogs.com/pan11jing/archive/2012/04/18/2455092.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值