继承工作机制
1.调用方法:先找到相应消息的对象 -> 在去找到对象是那个类的实例化 -> 找这个类的方法列表 是否有方法可以相应这个消息 ----有---> 执行代码
----没有---> 去父类查找
2.调用实例变量:方法中使用的实例变量 其实和方法定义在那个类中无关 而是与那个对象调用了这个方法有关 因为实例变量的值是存放在 对象中 对象调用方法 会将自身传入方法中(self) 在方法中使用实例变量 其实就是self->实例变量 他的值之和对象有关
重写方法:会导致子类的方法覆盖父类的方法 并不是父类的方发真正不存在了 只是当在子类的方法列表中查找是已经可以找到这个方法 就不会到父类查找 这样父类的方法其实就调用不到了
super:可以绕过子类 直接到父类查找 super不是对象也不是类 是"编译器指示符"
组合:一个对象拥有其它对象(拥有基本类型不算 基本类型算是对象的一部分)
小细节:
1.编译器指令后不能有分号(;)
2.oc中并不存在真正的私有方法 因为这是oc的动态机制的副作用
3.类的实现和申明的参数名可以不一致
4.既可以向对象发送消息 又可以向类发送消息
5.getxxxx在cocoa中有是将你传递的参数 以指针的方式返回 (所以尽量不使用getxxxxx)
6.父类不能用前置声明 因为子类在分配空间时必须要知道父类的实例变量占用的空间 和 父类的具体信息