OC之里氏替换原则

 1. 里氏替换原则. LSP

    子类对象可以替换父类对象的位置,并且程序的功能不受影响.

    为什么?

    1). 指针是1个父类类型,但是我们确给了指针1个子类对象的地址.

        这样做当然是可以的,因为你要1个父类对象,我给了你个子类对象.

        子类就是1个父类嘛.

    2). 因为父类中的成员子类都有. 只会多不会少.

        所以,程序的功能不受影响.

 2. 里氏替换原则的表现形式:

    当1个父类指针,指向1个子类对象的时候.这里就是里氏替换原则.

 3. LSP的好处是什么?

    1). 1个指针不仅仅可以存储本类对象的地址,还可以存储子类对象的地址.

    2). 如果1个指针的类型是NSObject类型的.哇哇哇. 那么这个指针中就可以存储任意的OC对象的地址.

        C语言中学习到的那些类型不是OC对象.

        所以,NSObject类型的指针,我们叫做万能指针.

    3). 如果1个数组的元素的类型是1个父类指针类型.那么这个数组中既可以存储本类对象 也可以存储子类对象.

    4). 如果1个数组的元素的类型是NSObject*类型的,

        那么就意味 这个数组可以存储任意的OC对象.

    5). 如果你发现1个方法的参数是1个父类对象 那么实参可以是1个父类对象,也可以是1个子类对象.

 4. LSP的局限性.

    当1个父类指针指向1个子类对象的时候

    只能通过这个父类指针去访问这个子类对象中的父类成员. 子类独有的成员无法访问.

不忘初心,方得始终
原文地址:https://www.cnblogs.com/jialiangliang/p/6287550.html