Object-C 学习笔记(二十二)--- 协议Protocol
来源:互联网 发布:阿里云事业部组织架构 编辑:程序博客网 时间:2024/06/10 15:00
协议:相当于其他面相对象语言中得抽象类(@optional)或者是接口(@required),弥补面相对象多继承.
于接口的区别:java C# C++中的接口或抽象类可以通过子类实例化对象,进行向上转型,但是协议不能实例化对象.
//// Car.h// protocolDemo//// Created by 5016 on 13-12-16.// Copyright (c) 2013年 dradon. All rights reserved.//#import <Foundation/Foundation.h>/* *定义协议 *相当于其他面相对象语言中得抽象类(@optional)或者是接口(@required) */@protocol Car <NSObject>//需求:对于车来说不一定要上颜色@optional,但是必须能跑@required//默认为@required@required//相当于其他面相对象语言的接口,一定要实现(覆盖)-(void)run;//上路跑@optional//相当于其他面相对象语言的抽象类,可选实现(覆盖)-(void)color;//上颜色@end
//// Benz.h// protocolDemo//// Created by 5016 on 13-12-16.// Copyright (c) 2013年 dradon. All rights reserved.//#import <Foundation/Foundation.h>#import "Car.h"@interface Benz : NSObject<Car>@end
//// Benz.m// protocolDemo//// Created by 5016 on 13-12-16.// Copyright (c) 2013年 dradon. All rights reserved.//#import "Benz.h"@implementation Benz-(void)run//上路跑{ NSLog(@"奔驰车正在路上跑");}-(void)color//上颜色{ NSLog(@"奔驰车上了黑颜色");}@end
//// main.m// protocolDemo//// Created by 5016 on 13-12-16.// Copyright (c) 2013年 dradon. All rights reserved.//#import <Foundation/Foundation.h>#import "Benz.h"int main(int argc, const char * argv[]){ @autoreleasepool { Benz *benz = [[Benz alloc] init]; [benz run]; //判断是否能响应这个方法 if ([benz respondsToSelector:@selector(color)]) { [benz color]; } if([benz conformsToProtocol:@protocol(Car)]){ NSLog(@"响应这个协议(实现这个接口)"); } } return 0;}
0 0
- Object-C 学习笔记(二十二)--- 协议Protocol
- Object-C学习笔记-Protocol(协议)与非正式协议
- object-c学习:协议 Protocol
- object-c学习:协议protocol
- object-c学习:协议protocol
- Object-C 协议 Protocol
- Object-C 协议 Protocol
- Object-C 协议protocol
- Object-C 协议@protocol
- 【Object-C】协议 @protocol
- object-c-协议-protocol
- Object-c学习笔记十二-----特性
- object-c 正式协议 protocol
- Object-C中的协议Protocol
- Object-C加强 Protocol协议
- object-c协议(protocol)
- Object-C之协议Protocol
- Object-C中的协议Protocol
- 域用户管理和修改域密码策略
- awk 命令收藏
- 浏览器兼容调试
- 查询对象统计信息相关SQL
- (fucntion(){})()
- Object-C 学习笔记(二十二)--- 协议Protocol
- 网页爬虫边界控制策略研究
- POJ 1837
- js弹出对话框方式
- Android中的广播监听
- Binder 服务调用 和主线程的关系(1)
- C#笔记 委托与事件
- 第17周项目11-求字符串长度
- 5年总结