类的三大特性
2015-12-22 11:51
239 查看
封装
对于方法:
1.需要给外部使用的属性和方法放在头文件里面
2.自己私有的方法直接写在实现文件中
3.私有的属性写在实现文件中匿名拓展
@interface Person ()
@property (nonatomic, strong) NSString *password;
@end
对于成员变量:(头文件中)
1.@public 公有的 类自己可以访问,子类可以继承,外部也可以访问 访问方式 hr->name
2.@private 私有的 类自己可以访问,子类无法继承,外部不可以访问
3.@protected 受保护的 类自己可以访问, 子类可以继承, 外部不可以访问。默认。
继承
当工程中或者系统框架里面已经存在某些类,需要在这些类的基础上添加一些方法或者属性,那么可以选择继承,*oc不可多继承
1.术语
父类:要被继承的类
子类:自己定义准备继承于父类的类
根类:所有类的父类
@interface Animal(子) : NSObject(父)
super:不是指向父类的指针,而是一个标识
self:代表当前调用者,隐藏属性
2.类是自动向上装换的
@interface Person : NSObject
- (void)doSomething:(Father *)fa;
@end
Son *s = [[Son alloc] init];
s.name = @"son";
Person *p = [[Person alloc] init];
[p doSomething:s];
需要一个Father类型的参数,但是传递了一个Son类型的参数,自动进行了转换
多态
同一个方法,拥有不同的实现
1. 使用继承的方式实现多态
2. 使用协议的方式来实现多态
定义一个协议
@protocol 协议名 <父协议>
@required 必须实现
@optional 选择实现
@end
使用一个协议
@interface 类名 : 父类<协议名>
@end
对于方法:
1.需要给外部使用的属性和方法放在头文件里面
2.自己私有的方法直接写在实现文件中
3.私有的属性写在实现文件中匿名拓展
@interface Person ()
@property (nonatomic, strong) NSString *password;
@end
对于成员变量:(头文件中)
1.@public 公有的 类自己可以访问,子类可以继承,外部也可以访问 访问方式 hr->name
2.@private 私有的 类自己可以访问,子类无法继承,外部不可以访问
3.@protected 受保护的 类自己可以访问, 子类可以继承, 外部不可以访问。默认。
继承
当工程中或者系统框架里面已经存在某些类,需要在这些类的基础上添加一些方法或者属性,那么可以选择继承,*oc不可多继承
1.术语
父类:要被继承的类
子类:自己定义准备继承于父类的类
根类:所有类的父类
@interface Animal(子) : NSObject(父)
super:不是指向父类的指针,而是一个标识
self:代表当前调用者,隐藏属性
2.类是自动向上装换的
@interface Person : NSObject
- (void)doSomething:(Father *)fa;
@end
Son *s = [[Son alloc] init];
s.name = @"son";
Person *p = [[Person alloc] init];
[p doSomething:s];
需要一个Father类型的参数,但是传递了一个Son类型的参数,自动进行了转换
多态
同一个方法,拥有不同的实现
1. 使用继承的方式实现多态
2. 使用协议的方式来实现多态
定义一个协议
@protocol 协议名 <父协议>
@required 必须实现
@optional 选择实现
@end
使用一个协议
@interface 类名 : 父类<协议名>
@end
相关文章推荐
- python datetime
- 快速掌握htop
- win10怎么卸载程序软件?几种卸载软件方法详细介绍
- iOS开发系列--地图与定位
- servlet-------HttpServletRequest对象
- poj 1389Area of Simple Polygons(矩形面积并)
- unity中世界坐标和绝对坐标之间的转换
- jquery easyui easyui-treegrid 使用异步加载数据
- (ExtJs 3.4)Ext.Ajax.request的同步请求实现
- Java NIO与IO的区别和比较
- Jrebel是一套开发环境,用来实现热部署
- 英语 月份
- cocoaPod
- 网络打印机的一般故障
- IOS——在项目中获取FaceBook账号内容(从申请APPID开始)
- C语言中的malloc和free
- 【数据结构】希尔排序
- ActiveMQ 即时通讯服务 浅析
- cocos2dx - 伤害实现
- 计算双色球的中奖概率