多态

作者: 混世小码农 | 来源:发表于2019-03-07 13:06 被阅读0次

    学习oop多态

          1.方法重载

          2.方法重写

          3.里氏替换原则

    方法重载是在指同一类中相同方法的不同行为.

    方法重载:构造函数就属于特殊的方法重载.

    方法重载的特点:

          1.方法名必须相同.

          2.参数列表必须不相同(这里的不相同是参数类型,参数个数,以及参数顺序)

          3.在有相同参数列表个数的前提下,方法返回值不作为判断方法是否重载的依据.


    重写与覆盖的区别:

    覆盖:在子类中用 new 关键字修饰 定义的与父类中同名的方法,叫覆盖。


    总结

    1:不管是重写还是覆盖都不会影响父类自身的功能(废话,肯定的嘛,除非代码被改)。

    2:当用子类创建父类的时候,如 C1 c3 =newC2(),重写会改变父类的功能,即调用子类的功能;而覆盖不会,仍然调用父类功能。

    3:虚方法、实方法都可以被覆盖(new),抽象方法,接口 不可以。

    4:抽象方法,接口,标记为virtual的方法可以被重写(override),实方法不可以。

    5:重写使用的频率比较高,实现多态;覆盖用的频率比较低,用于对以前无法修改的类进行继承的时候。


    方法的重写:是指在继承关系中不同类之间方法之间的比较和研究

      第一个关键字:virtual  (虚)

             用virtual修饰的方法称之为虚方法.

    virtual一般情况下和override需要成对出现.

            如果子类重写使用了override,则父类必须拥有virtual修饰的方法

             反过来不一定成立,因为我们还有方法覆盖

    第二个关键字:override (重写)

            为什么要使用方法重写呢?

           1.使用虚方法其实就是对目前的程序不是很满意,暂时方法功能是实现的,希望后面

                    的程序员通过重写父类方法的方式,进行功能上的优化.

             2.可以通过继承系统提供的类,去修改系统类中提供的虚方法.

    方法重写需要注意的地方:

             1.不能重写父类中用sealed修饰的方法.

             2.不能重写父类中用static修饰的方法.

             3.如果父类中存在abstract方法,子类必须重写.


    LSP(里氏替换原则):

    原则上讲子类对象介绍给父类对象,也可以说子类替换父类,并且出现在父类能够出现的任何地方

    反过来说,父类对象是不能替换子类对象的,这种特性称为里氏替换原则

    1.子类可以隐式的转为父类

    2.父类必须强转子类

    相关文章

      网友评论

          本文标题:多态

          本文链接:https://www.haomeiwen.com/subject/kcismttx.html