里氏替换原则
- 里氏替换原则 ---LSP
- 子类可以替换父类的位置,并且程序的功能不受影响
- 父类指针迫切的需求要一个父类对象,而我们给了一个子类对象,这是完全没有问题的,因为子类就是一个父类嘛。
- 因为父类中拥有的成员,子类都要,所以不会影响程序的工鞥
- 里氏替换原则的表现形式。
- 当一个父类指针指向一个子类对象的时候,这里就有里氏替换原则
- LSP的作用
- 一个指针中不仅可以存储本类对象的地址,还可以存储子类对象的地址。
- 如果一个指针的类型是NSObject类型的,那么这个指针中可以存储任意的oc对象的地址。
- 如果一个数组的元素的类型是一个OC指针类型的,那么这个数组不仅可以存储本类对象还可以存储子类对象
Person *ps[4];
ps[0] = [person new];
ps[1] = [student new];
ps[2] = [ItCastStu new];
ps[3] = @"jack";
- 如果1个数组的元素是NSObject指针类型,那么意味着任意的OC对象都可以存储到这个数组之中
- 如果一个方法的参数是一个对象,那么我们在为这个参数传值的时候,可以传递一个本类对象,也可以传递一个子类对象,对方法中的代码不会有丝毫影响。
- 当一个父类指针指向一个子类对象的时候。这个时候,通过这个父类指针就只能去调用子类对象中的父类成员,子类独有的成员无法访问。