• 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)和上一条对比:重写方法中子类的变量调用子类重写的方法,父类的变量要看这个父类引用的是子类的实例还是本身的实例,如果引用的是父类的实例那么调用基类的方法,如果引用的是派生类的实例则调用派生类的方法。
  • 相关阅读:
    什么是面向对象(OOP)
    Java虚拟机(JVM)你只要看这一篇就够了!
    ES6中新增的Object.assign()方法详解
    微信小程序_专题_脚本之家(小程序全部知识点)
    微信小程序 生命周期详解
    vue 阻止事件冒泡,捕获方法
    Java必备常见单词
    JS夸页面通信极简方案&纯前端实现文件下载
    vue keep-alive以及activated,deactivated生命周期的用法
    JVM实用参数 内存调优
  • 原文地址:https://www.cnblogs.com/zmztya/p/7086239.html
Copyright © 2020-2023  润新知