浅谈Objective-C继承和多态

继承的试用场合:

  • 当两个类拥有相同的属相和方法时,就可以将相同的属性和方法抽取到一个父类中。
  • 当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类,也可以考虑使用组合。
  • 继承:###是XXX,如狗是动物,可以让狗继承动物类
  • 组合:###拥有XXX,如学生有书,可以让书这个类作为学生类的属性。

继承的使用注意:

  • 编译器从上往下执行,所以在子类前面至少应该要有父类的声明;
  • OC中不允许子类和父类拥有相同名称的成员变量;
  • OC中的子类可以拥有和父类相同名称的方法,在子类调用时,优先去自己的内部寻找,如果没有则一层一层往上找;
  • 重写即子类重新实现了父类中的某个方法,覆盖了父类以前的实现。你重新实现的方法,必须要和父类的方法原型相同,即有相同的返回值类型和参数。
  • 方法可以从父类继承到子类,但是不可以从子类到父类。

多态:用一个父类的指针指向子类的对象,在函数调用时可以调用到正确版本的函数。

  • 1.用一个父类的指针指向一个子类的对象。
  • Animal *b = [[Cat alloc] init];
  • 2.用一个父类的指针当函数的形参,用这个指针可以接收到任何它的子类的对象也包括他自己。
  • 3.在复合类中,尽量引用高层次的类当作类的成员变量,这样可以通过它创建出它所对应的任何子类对象包括它自己。
原文地址:https://www.cnblogs.com/s-y-j/p/5756729.html