1.self和对象方法
谁调用当前方法,self就代表谁
* self在对象方法中,self代表当前对象
* self在类方法中个,self代表类
> self在对象方法中 可以利用self->属性名称的方式访问成员变量
> [self 方法名称]; 调用其它方法(类方法/对象方法)
2.self注意
在类方法中不能利用self调用和自己同名的类方法,会造成死循环
在对象方法中不能利用self调用和自己同名的对象方法,会造成死循环
3.继承
当A类继承了B类, A类就拥有了B类所有的成员变量和方法
优点:
继承的出现减少了代码量
提高了代码的安全性
让类与类之间产生了关系
让phone和Iphone有了关系 (父子关系),正是因为有了父子关系才有多态的特性
让Iphone和Anycall有了关系(兄弟关系)
坏处:
耦合性太强
注意点:
如果子类实现了和父类一模一样的方法我们称之为重写
子类当中不能定义和父类相同的成员变量
OC只支持但继承不支持多继承
OC中可以有多层继承
子父类中的方法调用顺序:
现在本类中找,如果本类没有再到父类中找,如果父类中没有,就到爷爷类中找
NSObject是99.9%的类的父类
查看父类中的功能, 建立子类对象使用功能
super是明确的告诉程序要执行父类中的方法
super使用场合:子类重写父类方法的时候想保留父类的一些行为的时候
使用super在对象方法中调用父类的方法会调用父类的对象方法
4.escription
当使用%@打印一个对象的时候会去调用对象的description方法
5.多态
什么是多态:多态就是某一类事物的多种形态
猫 == 猫 == 动物
狗 == 狗 == 动物
男人 == 男人 == 人 == 高级动物
女人 == 女人 == 人 == 高级动物
在代码中多态的前提:没有继承就没有多态
狗 *g = [狗 new];
代码体现:用父类类型的指针指向了子类对象,这就是多态
例如 动物 *a = [狗 new];
OC特性:运行方法时会动态检查对象的真实类型, (动态绑定)
Animal *a1 = [Dognew];
[a1 eat];//a1的真实类型是Dog,因此会调用Dog的eat方法而不是Animal的eat方法
多态的好处:多态的存在提高了程序的扩展性
多态的局限性:父类类型的指针不能调用子类对象的特有方法,如果想调用子类特有方法必须强制类型转换为子类类型
注意:不要把父类类型强制转换为子类类型
6.成员变量作用域
当是public的是可以在其它文件中直接访问
当是private的时候,在其它文件中不能直接访问
当是protected的时候,在其它文件中不能直接访问
默认情况下所有属性都是protected的
在子类中该可以访问父类中protected修饰的成员变量
在子类中该可以访问父类中public修饰的成员变量
在子类中该"不可以"访问父类中private修饰的成员变量