什么是多态?

发布时间:2022-07-03 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了什么是多态?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

多态是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。

多态建立在类的继承之上:

  • 类成员的 “横向拓展” (类成员越来越多)
  • 类成员的 “纵向拓展” (类的行为改变,类的成员的 “版本升高”)
  • 类成员的隐藏 (new 关键字)——不常用,因为理解复杂且容易出错
  • 类成员的重写 (override 关键字)
  • 重写和隐藏发生的条件:函数或属性成员一致,拥有可见性(如父类的是PRivate,那肯定不能重写了),函数或属性签名需要一致(方法名,参数类型,返回类型)

多态:

基于类的重写机制(virtual-override):函数成员的具体行为(版本)由引用的对象决定

class Program
    {
        static void Main(string[] args)
        {
            PErson person = new Person();
            person.Show();

            Person teacher = new Teacher();
            teacher.Show();

            //子类方法版本被隐藏 则找寻上一个版本
            Person doctor = new Doctor();
            doctor.Show();

        }
    }

    class Person
    {
        public virtual void Show()
        {
            Console.WrITeLine("I am Person");
        }
    }

    class Teacher : Person
    {
        public override void Show()
        {
            Console.WriteLine("I am Teacher");
        }
    }

    class Doctor : Teacher
    {
        //在多态状态时  隐藏改方法
        public new void Show()
        {
            Console.WriteLine("I am Teacher");
        }
    }

  

基于接口的多态机制:接口的行为由它决定的接口实现

class Program
    {
        static void Main(string[] args)
        {
            IPerson person = new Person();
            person.Show();

            IPerson teacher = new Teacher();
            teacher.Show();
        }
    }

    interface IPerson
    {
        public void Show();
    }

    class Person : IPerson
    {
        public void Show()
        {
            Console.WriteLine("I am Person");
        }
    }

    class Teacher : IPerson
    {
        public void Show()
        {
            Console.WriteLine("I am Teacher");
        }
    }

 

 

  

脚本宝典总结

以上是脚本宝典为你收集整理的什么是多态?全部内容,希望文章能够帮你解决什么是多态?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。