多态/分类/扩展/协议 总结

来源:互联网 发布:免费手机屏幕录制软件 编辑:程序博客网 时间:2024/06/08 08:46

一.多态

  1.定义

对于一个父类的引用(类与类之间有一种关系,继承关系),可以指向子类,也可以指向本类.指向类型的不同,当通过此引用向对象发消息,调用的方法是不同的,此时方法的调用就是多态.有参数多态,数组多态,返回值多态.

2.注意事项

如果创建的对象的指针类型是父类的访问方式,内存创建的方式是用的子类的元类创建的,则该对象不能访问子类里面独有的方法,只能访问继承自父类的方法,如果子类对于父类继承过来的方法有改写,那么执行改写过后的方法.

所以对象的指针类型决定了它的内存访问方式:只能访问该指针类型对应的元类里面的方法,而创建内存时候所用到的元类决定了它具体调用的继承方法.

二.分类

1.定义

分类是对类的补充和扩展,补充和扩展的部分就是分类,它本身并不是类,而是类的一部分,是给特定的类添加能力.

2.定义形式

分类文件是有.h和.m文件的,生成的名字是***+***.h和***+***.m,中间是加号.

3.注意事项

分类里面只能声明实现方法,不能增加变量,而且扩展里面的方法优先被调用.

4.代码示例

TRPerson类继承自NSObject@interface TRPerson : NSObjecttravel是TRPerson的分类@interface TRPerson (travel)@implementation TRPerson (travel)

三.扩展

1.定义

扩展其实也是分类,他是分类的一种特殊形式,是没有名字的分类

2.定义形式

扩展文件只有.h文件,生成的名字是***_***.h,中间是下划线

3.注意事项

扩展的头文件里面能声明属性,变量,也能声明方法.方法的实现部分是在被扩展的对象的.m文件里的.以上三个内容均为私有,只能在.m文件里使用.相当于是用来声明私有的属性和方法.而分类里面的方法是公有的,可以被外部访问,相当于是用来声明和实现公有方法.

4.代码示例

@interface TRPerson : NSObject@interface TRPerson ()

四.协议

1.定义

协议就是规则,定义一个协议,就相当于制定了一个规则的列表.遵守了该协议,并实现里面的方法,就拥有了一种能力.

2.定义形式

协议是定义在.h文件里的,@required声明的方法和属性必须遵守,@optional声明的方法和属性选择性遵守.,默认为@required.协议里面声明的方法是在遵守该协议的类里面实现的.具体形式:@interface 类名(分类类名):父类名<协议名1,协议名2>

3.注意事项

协议除了可以单独在一个头文件里面定义,还可以在类的头文件里面声明,后面学的UITableView里面两个重要协议UITableViewSource和UITableViewDelegate都是定义在UITableView的头文件里的.

1 0
原创粉丝点击