继承的试用场合:
- 当两个类拥有相同的属相和方法时,就可以将相同的属性和方法抽取到一个父类中。
- 当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类,也可以考虑使用组合。
- 继承:###是XXX,如狗是动物,可以让狗继承动物类
- 组合:###拥有XXX,如学生有书,可以让书这个类作为学生类的属性。
继承的使用注意:
- 编译器从上往下执行,所以在子类前面至少应该要有父类的声明;
- OC中不允许子类和父类拥有相同名称的成员变量;
- OC中的子类可以拥有和父类相同名称的方法,在子类调用时,优先去自己的内部寻找,如果没有则一层一层往上找;
- 重写即子类重新实现了父类中的某个方法,覆盖了父类以前的实现。你重新实现的方法,必须要和父类的方法原型相同,即有相同的返回值类型和参数。
- 方法可以从父类继承到子类,但是不可以从子类到父类。
多态:用一个父类的指针指向子类的对象,在函数调用时可以调用到正确版本的函数。
- 1.用一个父类的指针指向一个子类的对象。
- Animal *b = [[Cat alloc] init];
- 2.用一个父类的指针当函数的形参,用这个指针可以接收到任何它的子类的对象也包括他自己。
- 3.在复合类中,尽量引用高层次的类当作类的成员变量,这样可以通过它创建出它所对应的任何子类对象包括它自己。