小白学开发(iOS)OC_ 使用继承来扩充类(2015-08-07)
来源:互联网 发布:网络打印服务器设置 编辑:程序博客网 时间:2024/05/22 12:39
//
// 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 = [[Personalloc]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
{
[selfeat];
_age =50; // 分类中可以直接调用原类中的成员变量
NSLog(@"黑人很会跳舞");
}
- (void)eat1
{
NSLog(@"黑人吃东西");
}
@end
- 小白学开发(iOS)OC_ 使用继承来扩充类(2015-08-07)
- 小白学开发(iOS)OC_继承(2015-07-26)
- 小白学开发(iOS)OC_多态(2015-07-27)
- 小白学开发(iOS)OC_定义一个类(2015-07-21)
- 小白学开发(iOS)OC_类和对象(2015-07-22)
- 小白学开发(iOS)OC_类方法和对象方法(2015-07-22)
- 小白学开发(iOS)OC_类的本质(2015-07-27)
- 小白学开发(iOS)OC_类的互引用(2015-07-29)
- 小白学开发(iOS)OC_ Foundation之NSString类(2015-08-11)
- 小白学开发(iOS)OC_ 基本数据类型的包装类(2015-08-14)
- 小白学开发(iOS)OC_ block数据类型(2015-08-08)
- 小白学开发(iOS)OC_第一个OC (与C的区别)(2015-07-21)
- 小白学开发(iOS)OC_匿名对象(2015-07-24)
- 小白学开发(iOS)OC_封装_成员变量(set get方法)(2015-07-24)
- 小白学开发(iOS)OC_组合模式(2015-07-24)
- 小白学开发(iOS)OC_面向对象总结(2015-07-25)
- 小白学开发(iOS)OC_成员变量的作用域(2015-07-27)
- 小白学开发(iOS)OC_ 点语法(2015-07-27)
- django中模板文件加载
- jQuery获取鼠标坐标
- 数组处理函数
- Hdu 5371 Manacher算法
- 从100PV到1亿级PV网站架构演变
- 小白学开发(iOS)OC_ 使用继承来扩充类(2015-08-07)
- 常用数据库 JDBC URL 格式 分类: Java 2011-01-19 14:55 21582人阅读 评论(1) 收藏 举报 jdbcurl数据库teradatasqlservermicroso
- 获取Apk图标方法
- 地铁不让带的部分物品
- 笑谈mapreduce
- iOS语音播放之切换听筒和扬声器
- PHP 常用的代码片段
- OpenPR开源代码项目(中科院自动化所)-含很多图像处理、模式识别、机器学习、自然语言处理的算法
- jQuery获得页面元素的绝对/相对位置