封装、继承、多态
封装:封装主要的功能是将数据隐藏起来,只有此类别所属的方法,亦即实体方法(instance
method),才能直接存取数据,所以也可以说是在保护数据,不会被外界任意的存取,所以就大大的降低数据的误用,且很容易的知道错误在哪里,从而省下很多的维护成本。面向对象程序设计中的方法可分为两种,一为上述的实体方法,二为类别方法(class method)。主要的差异在于实体方法需要有一对象去引发,而类别方法可以由类别名称触发之。
多态:父类指针指向子类对象。两种表现形式:重写(父子类之间)和重载(本类中)
OC的多态体现是:重写,没有重载这种表现形式
举例说明:
@interface Parent : NSObject //父类
- (void)simpleCall;
@end
@interface Child_A : Parent //子类 Child_A
@end
@implementation Child_A
- (void)simpleCall
{
NSLog(@"我是Child_A的simpleCall方法");
}
@end
@interface Child_B : Parent //子类Child_B
@end
- (void)simpleCall
{
NSLog(@"我是Child_的simpleCall方法");
}
@end
然后,我们就可以看到多态所展示的特性了:
Parent * pa=[[Child_Aalloc] init];//父类指针指向子类Child_A对象
Parent * pb=[[Child_Balloc] init];//父类指针指向子类Child_B对象
[pa simpleCall];// 显然是调用Child_A的方法
[pb simpleCall];// 显然是调用Child_B的方法
在OC中常看见的多态体现:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellWithIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellWithIdentifier];
return cell;
}
(UITableViewCell *)指向cell子类对象