OC笔记 - 面向对象特性(2015.1.28)

来源:互联网 发布:ubuntu 命令行解压deb 编辑:程序博客网 时间:2024/06/14 10:41

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修饰的成员变量

0 0
原创粉丝点击