一.类目

指向已知的类中添加新方法,不破坏封装性。已知类可以是自定义的类和系统的类。

1.类目的实现和声明

建一个学生类,并增加类目

OC语言中类目,延展,协议-LMLPHP

(1).声明(是在Student+Working.h中)

OC语言中类目,延展,协议-LMLPHP

必须引入原类,这里是Studnet类。

(2)  .实现(是在Student+Working.m中)

OC语言中类目,延展,协议-LMLPHP

注意引入OC语言中类目,延展,协议-LMLPHP

2.类目的使用

  i.不能再类目中添加实例变量

  j.可以为一个类添加多个类目,但类目名和方法名不能重复

  k.不能随意重写类目的方法

3.类目的局限性

  i.如果在类目中重写父类的方法可能导致super消息的断裂,因为在类目中的方法优先级高于父类。

  j.无法在在类目中添加实例变量。

二.延展

通过在自己的类的实现文件中添加添加类目来声明私有方法,延展相当于一个匿名的类目。

1.声明

OC语言中类目,延展,协议-LMLPHP

在studnet.m文件中,在@implementation之上,方法是不需要实现的

延展不提供名称表示必须实现,提供名称可以不实现。

2.实现

OC语言中类目,延展,协议-LMLPHP

在studnet.m文件中,在@implementation和@end中实现方法。

OC语言中类目,延展,协议-LMLPHP

以上在main.m中调用并打印的结果如下:

OC语言中类目,延展,协议-LMLPHP

三.协议

声明一些方法,让别的类来实现,也可以为类增加方法

1.声明一个协议

OC语言中类目,延展,协议-LMLPHP文件中

OC语言中类目,延展,协议-LMLPHP

2.在OC语言中类目,延展,协议-LMLPHP导入协议的头文件

OC语言中类目,延展,协议-LMLPHP

3.在OC语言中类目,延展,协议-LMLPHP文件中采用协议

OC语言中类目,延展,协议-LMLPHP

4.并在OC语言中类目,延展,协议-LMLPHP文件中实现协议中的方法

OC语言中类目,延展,协议-LMLPHP

04-25 23:27