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个子类对象的时候
只能通过这个父类指针去访问这个子类对象中的父类成员. 子类独有的成员无法访问.
时间: 2024-10-19 02:32:28