前端之家收集整理的这篇文章主要介绍了
OC基础-里氏替换原则12,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
1. 里氏替换原则 --- LSP
@H_
404_4@
子类可以替换父类的位置.并且程序的功能不受影响.
@H_
404_4@
1). 父类指针迫切的需求要1个父类对象,而我们给了1个子类对象,
@H_
404_4@
这是完全没有问题的.因为子类就是1个父类嘛.
@H_
404_4@
2). 因为父类中拥有的成员子类都有.所以不会影响程序的功能.
2. 里氏替换原则的表现形式.
@H_
404_4@
当1个父类指针指向1个子类对象的时候,这里就有里氏替换原则.
3. LSP的作用。
@H_
404_4@
1). 1个指针中不仅可以存储本类对象的地址还可以存储子类对象的地址.
@H_
404_4@
2). 如果1个指针的类型是NSObject类型的,那么这个指针中可以存储任意的OC对象的地址.
@H_
404_4@
3). 如果1个数组的元素的类型是1个OC指针类型的那么这个数组中不仅可以存储本类对象还可以存储子类对象.
@H_
404_4@
4). 如果1个数组的元素是NSObject指针类型那么意味着任意的OC对象都可以存储到这个数组之中.
@H_
404_4@
5). 如果1个方法的参数是1个对象,那么我们在为这个参数传值的时候.
@H_
404_4@
可以传递1个本类对象也可以传递1个子类对象.
@H_
404_4@
对方法中的代码不会有丝毫的影响.
4. 父类指针指向1个子类对象
@H_
404_4@
这个时候,通过这个父类指针就只能去调用子类对象中的父类成员.
@H_
404_4@
子类独有的成员无法访问.
@H_
404_4@
因为在编译的时候,会先检查调用的方法在指针类型类中是否存在对应的对象方法,如果没有就通不过编译。 原文链接:https://www.f2er.com/javaschema/282997.html