什么是多态?

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

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

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

 

 

  

上一篇:MySQL_3 连接查询


下一篇:Java 常用API--02