zoukankan      html  css  js  c++  java
  • 什么是多态?

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

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

    • 类成员的 “横向拓展” (类成员越来越多)
    • 类成员的 “纵向拓展” (类的行为改变,类的成员的 “版本升高”)
    • 类成员的隐藏 (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");
            }
        }

     

      

  • 相关阅读:
    mongodb.conf配置文件
    mongodb创建普通角色和普通用户
    add unique index 注意事项
    error: src refspec master does not match any
    innodb_data_file_path配置变更引发mysql重启失败
    time_zone参数配置
    主键有无检测
    gdb在线修改mysql变量
    mybatis连接数据库
    mongo登录
  • 原文地址:https://www.cnblogs.com/Xieyiincuit/p/15394520.html
Copyright © 2011-2022 走看看