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

     

      

  • 相关阅读:
    【设计模式】6.模板方法模式
    【设计模式】5.原型模式
    【设计模式】4.工厂模式
    【设计模式】3.代理模式
    zookeeper集群的搭建
    zookeeper实现分布式锁的原理和一个小例子
    zookeeper配置管理实现原理----监听事件watch
    zookeeper的javaAPI操作(基于Curator的CRUD)
    java.lang.IllegalArgumentException: A HostProvider may not be empty!
    Zookeeper的安装和基本操作
  • 原文地址:https://www.cnblogs.com/Xieyiincuit/p/15394520.html
Copyright © 2011-2022 走看看