oc 协议

10 篇文章 0 订阅
5 篇文章 0 订阅

@protocol myProtocol <NSObject> // 基协议


@required // 声明了必须要实现的,默认情况下都是          

@required

- (void)walk;

- (void)speak;

- (void)think; // think在类实现中未实现会警告!!!

@optional

- (void)sing;

- (void)laugh;


@end

协议可以声明一大堆方法,但不能声明成员变量;

两个协议之间不能继承,但协议可以遵守另一个协议;

子类可以遵守父类遵守的协议;


NSObject<myProtocol,allProtocol> * stu = [[Student alloc]init];

等价于

Student *stu = [[Student alloc]init];// 任何类


   [stu eat]; // 子类重写了,调用子类的

   [stu run]; // 子类没重写,向上找找到父类的方法


student can eat

person can run

Program ended with exit code: 0



Student * stu  = [[Student alloc]init];

Student <myProtocol>  * student = stu;

NSObject<myProtocol> * student = stu;

id<myProtocol> student = stu;

若报错,就检验出stu没遵守协议






#import "Student.h"


@implementation Student


- (void)exam{

    NSLog(@"student can exam.");

}


- (void)eat{

    NSLog(@"student can eat");

}

@end


#import <Foundation/Foundation.h>


@protocol allProtocol <NSObject>


- (void)eat;

- (void)run;


@end


#import "Person.h"


@implementation Person


- (void)eat{

    NSLog(@"person can eat");

}

- (void)run{

    NSLog(@"person can run");

}


@end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值