c# 之继承、封装、多态

虽然理解了继承和封装,但是多态总是忘记其定义,很容易被忽略,通过这一次的查找资料和总结能帮助自己更好的理解

1/多态的概念:

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

2/多态需要了解的其他概念:重载、重写、虚方法、抽象方法以及隐藏方法。

     隐藏方法:

public abstract class Biology
        {
            public abstract void Live();
        }
        public class Animal : Biology
        {
            public override void Live()
            {
                Console.WriteLine("Animal重写的Live");
                //throw new NotImplementedException();
            }
            public void Sleep()
            {
                Console.WriteLine("Animal Sleep");
            }
            public int Sleep(int time)
            {
                Console.WriteLine("Animal在{0}点Sleep", time);
                return time;
            }
            public virtual void EatFood()
            {
                Console.WriteLine("Animal EatFood");
            }
        }
        public class Cat : Animal
        {
            public override void EatFood()
            {
                Console.WriteLine("Cat EatFood");
                //base.EatFood();
            }
            new public void Sleep()
            {
                Console.WriteLine("Cat Sleep");
            }
            //public new void Sleep()
            //{
            //    Console.WriteLine("Cat Sleep");
            //}
        }

运行:

Animal animal = new Cat();
animal.Sleep();
animal.EatFood();

得到的结果是

Animal Sleep

Cat EatFood

(1)隐藏方法不但可以隐藏基类中的虚方法,而且也可以隐藏基类中的非虚方法。
(2)隐藏方法中父类的实例调用父类的方法,子类的实例调用子类的方法。
(3)和上一条对比:重写方法中子类的变量调用子类重写的方法,父类的变量要看这个父类引用的是子类的实例还是本身的实例,如果引用的是父类的实例那么调用基类的方法,如果引用的是派生类的实例则调用派生类的方法。
原文地址:https://www.cnblogs.com/zmztya/p/7086239.html