zoukankan      html  css  js  c++  java
  • 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个子类对象的时候

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

    不忘初心,方得始终
  • 相关阅读:
    软件/环境的注册码
    js图片延迟加载如何实现
    http状态码
    关于深拷贝(含数组对象)
    javascript继承方式详解
    使用寄生构造函数 创建类
    前端知识点大全【转载】
    统一addEventListener与attachEvent中this指向问题
    sublime text全程指南【转载】
    函数防抖与节流[转载]
  • 原文地址:https://www.cnblogs.com/jialiangliang/p/6287550.html
Copyright © 2011-2022 走看看