C#类的继承、方法重写、多态

11 篇文章 1 订阅

方法的重写(override)

父类中方法用virtual修饰,子类中方法用override修饰,构成了方法的重写,子类函数成员对父类函数成员的版本更新。此时函数的行为是由对象决定的,即实现了多态。

  class Program
    {
        public static int pi = 12;
        static void Main(string[] args)
        {
            Person chinese = new Chinese();
            chinese.say();//打印出:中国人
            Console.ReadKey();
        }
    }
   class Person//父类
    {
       public virtual void say()
        {
            Console.WriteLine("人类");
        }      
    } 
    class Chinese : Person//Chines是子类
    {
        public override void say()
        {
            Console.WriteLine("中国人");
        }
    }

方法的覆盖

父类和子类中具有相同的函数时,在子类中会将父类的方法隐藏。若仍使用父类引用创建子类对象时,会调用父类的方法,这时不是多态。尽量避免这种情况。

class Program
    {
        public static int pi = 12;
        static void Main(string[] args)
        {
            Person chinese = new Chinese();
            chinese.say();//打印出人类
            Console.ReadKey();
        }
    }
   class Person//父类
    {
       public  void say()
        {
            Console.WriteLine("人类");
        }      
    } 
    class Chinese : Person//Chines是子类
    {
        public  void say()
        {
            Console.WriteLine("中国人");
        }
    }

重写的条件

  • 方法成员(方法、属性等)
  • 方法可见(protected public)
  • 方法签名一致
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值