//

//  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方法,执行可见是打印“黑人吃东西”,所以方法被覆盖了

}

;

}

//

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

// 分类中能够直接调用原类中的成员变量

NSLog(@"黑人非常会跳舞");

}

- (void)eat1

{

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

}

@end


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

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

    // //  main.m //  block数据类型 // //  Created by admin on 15/8/12. //  Copyright (c) 2015年 admin. All r ...

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

    // //  main.m //  字符串重组 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All right ...

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

    // //  main.m //  字符串的获取 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All righ ...

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

    // //  main.m //  字符串写入文件 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All rig ...

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

    // //  main.m //  经常使用结构体 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All rig ...

  6. 小白学开发(iOS)OC_ SEL数据类型(2015-08-10)

    // //  main.m //  SEL数据类型 // //  Created by admin on 15/8/12. //  Copyright (c) 2015年 admin. All rig ...

  7. ios swfit 由继承UIButton了解类的构造方法

    最近需要建立UIButton的子类. 先看一看swfit中继承父类构造方法的条件: Rule1 1“If your subclass doesn’t define any designated ini ...

  8. 小白学Java:RandomAccessFile

    目录 小白学Java:RandomAccessFile 概述 继承与实现 构造器 模式设置 文件指针 操作数据 读取数据 read(byte b[])与read() 追加数据 插入数据 小白学Java ...

  9. 第十四章 web前端开发小白学爬虫

    老猿从事IT开发快三十年了,接触互联网也很久了,但自己没有做过web前端开发,只知道与前端开发相关的一些基本概念,如B/S架构.html标签.js脚本.css样式.xml解析.cookies.http ...

随机推荐

  1. chage---修改帐号和密码的有效期限

    chage命令   chage命令是用来修改帐号和密码的有效期限. 语法 chage [选项] 用户名 选项 -m:密码可更改的最小天数.为零时代表任何时候都可以更改密码. -M:密码保持有效的最大天 ...

  2. [Redux-Observable && Unit testing] Testing the output of epics

    Epics can be unit-tested just like any other function in your application - they have a very specifi ...

  3. 使用注解的方式配置Servlet

    提到Servlet的配置,大多数人想到的应该都是在web.xml中配置吧.有没有更简洁的方式呢?今天就学到了採用注解的方式配置Servlet. 此方式尽管简便.但当然也存在问题. 採用注解的有点:你能 ...

  4. inflater-布局转化实现

    通俗的说,inflate就相当于将一个xml中定义的布局找出来.因为在一个Activity里如果直接用findViewById()的话,对应的是setConentView()的那个layout里的组件 ...

  5. ContentValues的使用

    什么是 ContentValues类? ContentValues类和 Hashtable比较类似,它也是负责存储一些名值对,但是它存储的名值对当中的名是一个String类型,而值都是基本类型. 插入 ...

  6. actionbar spinner-用法实例

    今天需要更改一个actionbar上的spinner的字体颜色,结果试了好长时间都没有解决,最后才发现,原来他是在代码下增加的一个textview,然后使用adapter加载的,并不是直接用frame ...

  7. 11G、12C Data Guard Physical Standby Switchover转换参考手册

    Switchover转换   Step 1: switchover 切换先前检查 (1)确保主备两端log_archive_config和db_unique_name参数都已经正确设置. 需要注意的是 ...

  8. vue实现一个会员卡的组件(可以动态传入图片(分出的一个组件)、背景、文字、卡号等)

    自己在写这个组件的时候主要遇到的问题就是在动态传入背景图片或者背景色的时候没能立马顺利写出来,不过现在实现了这个简单组件就和大家分享一下 <template> <div class= ...

  9. Python编写Appium测试用例(1)

    有段时间没有使用python编写测试用例了,很长时间以来,感觉appium这个测试工具确实不错,今天又重新拿起来,分享一下自己学习的一些用例,欢迎大家一起交流.学习! 1.登录客户端 #coding= ...

  10. 深度解析VC中的消息

    消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告诉应用程序某个事情 ...