您的位置:首页 > 移动开发 > IOS开发

小白学开发(iOS)OC_ 使用继承来扩充类(2015-08-07)

2015-08-13 10:01 423 查看
//

//  main.m

//  使用继承来扩充类

//

//  Created by admin on 15/8/12.

//  Copyright (c) 2015年 admin. All rights reserved.

//

/*

    当在一个类中有太多的方法会显得非常复杂,为了清楚表示,我们可以创建类的一个分类(category)来扩充这个类

    在其他面向对象语言中,使用继承关系类扩充一个类,然而这样最大的坏处就是耦合性太高

    OC使用(category)来扩充一个类

 

 注意:1.
只要在原类中生成的成员变量(私有变量除外)在分类中都可直接访问

      2. 如果在分类中定义实现类了与原类同名的方法,那么原类中的方法相当于被覆盖掉了(实际开发中,最好不要出现方法覆盖)

      3. 不能在分类中定义成员变量,只能增加方法

 */

#import <Foundation/Foundation.h>

#import "Person.h"

#import "Person+BlackPerson.h"

int main(int argc,
const char * argv[]) {

    @autoreleasepool {

        
       
Person *p = [[Person
alloc]init];

        [p eat];//
这里调用了eat方法,运行可见是打印“黑人吃东西”,所以方法被覆盖了

        
    }
   
return 0;
}

//

//  Person.h

//  OC的特有语法

//

//  Created by admin on 15/8/12.

//  Copyright (c) 2015年 admin. All rights reserved.

//

#import <Foundation/Foundation.h>

@interface Person :
NSObject
{
   
int _age;
}

@property (nonatomic,assign)int age1;

@property (nonatomic,strong)NSString *name;

//人类的基本方法
- (void)eat;
- (void)drink;
- (void)smile;

@end

//

//  Person.m

//  OC的特有语法

//

//  Created by admin on 15/8/12.

//  Copyright (c) 2015年 admin. All rights reserved.

//

#import "Person.h"

@implementation Person

- (void)eat
{

    NSLog(@"人类吃东西");
}
- (void)drink
{

    NSLog(@"人类喝东西");
}
- (void)smile
{
   
NSLog(@"人类微笑");
}

@end

//

//  Person+BlackPerson.h

//  OC的特有语法

//

//  Created by admin on 15/8/12.

//  Copyright (c) 2015年 admin. All rights reserved.

//

#import "Person.h"

@interface Person (BlackPerson)

- (void)popping;

- (void)eat1;   
//  这里
覆盖了Person类中的eat方法

@end

//

//  Person+BlackPerson.m

//  OC的特有语法

//

//  Created by admin on 15/8/12.

//  Copyright (c) 2015年 admin. All rights reserved.

//

#import "Person+BlackPerson.h"

@implementation Person (BlackPerson)

- (void)popping
{
    [self
eat];

    _age =
50; 
// 分类中可以直接调用原类中的成员变量

    NSLog(@"黑人很会跳舞");
}

- (void)eat1
{

    NSLog(@"黑人吃东西");
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息