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

//

//  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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-28 14:08:46

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

小白学开发(iOS)OC_ protocol(协议) (2015-08-09)

// //  main.m //  protocol(协议) // //  Created by admin on 15/8/12. //  Copyright (c) 2015年 admin. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h" #import "Student.h" /* 1. 什么是协议: >  协议实际上是一种向上抽象的思想

小白学开发(iOS)OC_ 字符串的比较判断(2015-08-12)

// //  main.m //  字符串的比较判断 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //  1. 判断字符串是否为空 NSString *str = @&q

小白学开发(iOS)OC_ @property 参数(2015-08-05)

// //  Person.h //  手动内存管理 // //  Created by admin on 15/8/5. //  Copyright (c) 2015年 admin. All rights reserved. // #import <Foundation/Foundation.h> #import "Car.h" @interface Person : NSObject /* @property 参数的作用 1. 生成set和get方法的声明 2. 生成s

小白学开发(iOS)OC_ block数据类型(2015-08-08)

// //  main.m //  block数据类型 // //  Created by admin on 15/8/12. //  Copyright (c) 2015年 admin. All rights reserved. // #import <Foundation/Foundation.h> #import "Calculate.h" //  定义一个函数 void test() { NSLog(@"test函数"); } int main(

小白学开发(iOS)OC_ 字符串的获取 (2015-08-11)

// //  main.m //  字符串的获取 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All rights reserved. // #import <Foundation/Foundation.h> /* 1. 获取字符串长度 2. 根据字符串索引获得单个字符    // 这里的索引 就是下标 3. 根据索引获得一个字符串 4. 根据子串获得子串在另一个字符串中的索引位置 5. 根据字符串,获得

小白学开发(iOS)OC_基本数据类型转换成字符串(2015-08-12)

// //  main.m //  基本数据类型转换成字符串 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //      基本数据类型:(int float,double

小白学开发(iOS)OC_ 字符串重组(2015-08-13)

// //  main.m //  字符串重组 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //      1. 多个数据拼接成一个字符串 int year = 2015

小白学开发(iOS)OC_ 字符串写入文件(2015-08-13)

// //  main.m //  字符串写入文件 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { /* 将字符串写入到一个文件,并保存 > 需要写入文件的字符串内容

小白学开发(iOS)OC_ 常用结构体(2015-08-14)

// //  main.m //  常用结构体 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //      1. 表示范围:NSRange 结构体 NSRange ran