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");
            }
        }

     

      

  • 相关阅读:
    Android 源代码在线查看
    Android天气预报程序开发
    为自己的网站写个api接口
    Windows Server 2012改造成Windows8的方法(新增解决网络卡)
    完整java开发中JDBC连接数据库代码和步骤
    RF频偏
    通信系统架构,RF架构
    RF 速率与引导码preamble关系
    ubuntu虚拟机共享无线网上网
    win7下AdHoc网络设置共享外网上网
  • 原文地址:https://www.cnblogs.com/Xieyiincuit/p/15394520.html
Copyright © 2011-2022 走看看