------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1. 封装
在OC中,使用@interface和@implementation来处理类,@interface像暴露在外面的钟表表面,像外界提供展示及接口,@implementation就好像隐藏在时钟内部的构造实现,把具体的实现封装了起来。
封装的原理:实例变量默认只能被当前类的对象方法访问。
封装的目的:防止对象失去对实例变量的管理权。
封装的作用:
a. 保护数据安全
b.隐藏复杂的内容
c.隔离变化
封装的实现步骤:定义设置实例变量(setter)和访问实例变量(getter)的方法
set方法的作用:为外界提供一个设置成员变量的值的方法
get方法的作用:为调用者返回对象内部的成员变量
封装应用的示例代码如下(外界只能通过访问get和set方法访问对象的成员变量):
/**
*KLine类
*最低价格(可读写)
*最高价格(可读写)
*平均价格(只读)
*/
#import <Foundation/Foundation.h>
@interface KLine : NSObject
{
float _minPrice;
float _maxPrice;
float _avPrice;
}
-(void)setMinPrice:(int)minPrice;
-(float)getminPrice;
-(void)setMaxPrice:(int)maxPrice;
-(float)getmaxPrice;
-(float)getavPrice;
@end
@implementation KLine
-(void)setMinPrice:(int)minPrice{
_minPrice=minPrice;
//价格每次变化都重新计算平均价格
_avPrice=(_minPrice+_maxPrice)/2;
}
-(float)getminPrice{
return _minPrice;
}
-(void)setMaxPrice:(int)maxPrice{
_maxPrice=maxPrice;
//价格每次变化都重新计算平均价格
_avPrice=(_minPrice+_maxPrice)/2;
}
-(float)getmaxPrice{
return _maxPrice;
}
-(float)getavPrice{
return _avPrice;
}
@end
2. 继承
继承就是子类拥有父类的属性和方法。派生类不仅包括了基类的方法和属性,同时派生类可以增加自己的方法和属性。
继承的实现:
a. 导入父类的头文件
b. 声明类时继承父类 eg:@interface Dog:Animal
继承的注意事项:
a. 父类的私有属性能被继承,但不能被实现
b. OC中是单继承,只能继承一个父类
c. 子类不能定义和父类同名的变量,但是可以继承父类的变量
d. OC中支持多层继承
重写:在子类中重新实现父类中已经存在的方法。
3. 多态
概念:不同的对象以自己的方式响应父类同名方法。
体现:父类的指针指向子类的对象
多态的条件:有继承关系,有方法重写
多态的原理:动态绑定
多态的优点:简化了编程接口,容许类和类之间重用一些习惯的命名。
多态的示例代码:
#import <Foundation/Foundation.h>
#import "Animal.h"
//Dog类继承父类Animal
@interface Dog : Animal
@end
@implementation Dog
//重写父类的run方法
-(void)run{
NSLog(@"狗在跑");
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
//用父类的指针指向子类的对象
Animal *ani=[Dog new];
//调用Dog类的run方法
[ani run];
}
return 0;
}