OC学习之道:OC中类别--Category类目的使用/Eetension类的扩展 的使用
来源:互联网 发布:Date java 编辑:程序博客网 时间:2024/05/23 10:06
/ Objective-C中的类目(Category)的使用.1.类目,2.扩展,3.协议
//为什么使用类目,通过继承来实现某项功能话,有点大材小用的感觉,因为我们有时候只需要实现一个方法,所以继承就大了,没必要,而且NSString是不允许继承的
//创建类目文件是在cocoa的object-c category项目下创建
//1.类目
//1.1为没有源码的类型扩展功能(一般读系统提供的类,因为我们看不到该类的.m文件)
//1.2扩展的功能将会成为原类的一部分
//1.3通过类目可以给原始类添加功能(方法)但是不能给原始类添加实例变量
//1.4类目可以覆盖方法,但是不会再执行之前的那个方法了,而是调用新的方法
//为什么使用类目,通过继承来实现某项功能话,有点大材小用的感觉,因为我们有时候只需要实现一个方法,所以继承就大了,没必要,而且NSString是不允许继承的
//创建类目文件是在cocoa的object-c category项目下创建
//1.类目
//1.1为没有源码的类型扩展功能(一般读系统提供的类,因为我们看不到该类的.m文件)
//1.2扩展的功能将会成为原类的一部分
//1.3通过类目可以给原始类添加功能(方法)但是不能给原始类添加实例变量
//1.4类目可以覆盖方法,但是不会再执行之前的那个方法了,而是调用新的方法
//// main.m// Copyright (c) 2015年 tongxing. All rights reserved.//#import <Foundation/Foundation.h>#import "NSString+SayHi.h"#import "NSDate+ChangeType.h"int main(int argc, const char * argv[]){ @autoreleasepool {#pragma mark----Category类目的使用 NSString *str1 = @"刘亦菲"; NSString *str2 = @"张飞"; [str1 HelloGG];//self调用自身:str1 [str2 HelloMM]; // [NSString test];//类方法 //作业1:使⽤用Category为NSDate类添加⼀一个类⽅方法(dateWithDateString:),实现将下述字符串转换为NSDate对象。 将@“20140402142850”转换为NSDate。 NSDate *result= [NSDate dateWithDateString:@"2013-12-10 10:30:00"]; NSLog(@"%@",result); #pragma mark----Eetension类的扩展 //Extension针对的是⾃己的类,必须有源代码的类 //1.延展可以添加实例变量,但是类目不可以 Person *person = [[Person alloc]init]; [person work]; int result1 = [person factorial:2];//外界我们只需要传入参数2就行了,不需要知道怎么实现的 NSLog(@"%d",result1); }return 0;} //// NSString+SayHi.h// Copyright (c) 2015年 tongxing. All rights reserved.//#import <Foundation/Foundation.h>@interface NSString (SayHi)-(void)HelloMM;-(void)HelloGG;+(void)test;@end//// NSString+SayHi.m// Copyright (c) 2015年 tongxing. All rights reserved.//#import "NSString+SayHi.h"@implementation NSString (SayHi)-(void)HelloMM{ NSLog(@"哈喽,刘亦菲,我是%@",self);}-(void)HelloGG{ NSLog(@"哈喽,童星%@",self);}+(void)test{ NSLog(@"%@",self);}@end<pre name="code" class="html"><br/>
//// Person.m// Copyright (c) 2015年 tongxing. All rights reserved.//#import "Person.h"@interface Person (private)//private省去也是没有关系//以下为私有方法,只能在类的内部(当前的Person类)访问,外界是访问不到的,-(void)_showInfo;-(int)squre:(int)count;//求平方-(int)factorial:(int)number;//求阶乘@end//类的延展的语法形式如上,就相当于C中函数的声明@implementation Person{ int _number; //在这里定义属性,这个属性也是私有的 //但是这种方式和之前定义的@private的区别 //两者的区别就是一个在.h文件中定义的,一个是.m文件中定义的 //如果是开源的话,一般是开放.h和.m文件 //如果是闭源的话,一般只开放.h文件}//私有方法,只是在.m文件中定义了,没有在.h文件中声明,一般是在本类中自己使用的-(int)squre:(int)count{ return count*count;}//求平方-(int)factorial:(int)number{//该方法是需要声明的,它相当于一个借口,供外界传入参数进行使用 int result = 1; int value = [self squre:number];//本类自己调用私有方法先求平方 //计算平方之后的阶乘 for (int i=1; i<=value; i++) { result = result*i; } return result; }//求阶乘-(void)work{ [self _showInfo]; NSLog(@"开始工作了");}-(void)_showInfo{ NSLog(@"我的信息");}@end//// Person.h// Copyright (c) 2015年 tongxing. All rights reserved.//#import <Foundation/Foundation.h>@interface Person : NSObject{ NSString *_name; int _age;}-(void)work;-(int)factorial:(int)number;@end
0 0
- OC学习之道:OC中类别--Category类目的使用/Eetension类的扩展 的使用
- OC category类别的使用
- OC语法--类目Category--类的延展
- OC学习篇之---类目的概念和使用
- OC学习篇之---类目的概念和使用
- OC学习篇之---类目的概念和使用
- OC中类目,扩展,协议的介绍
- OC--category(类目、分类、类别)
- OC - 第七章 类的扩展: 类目Category, 延展Extension, 协议Protocol ( 一 )
- OC - 第七章 类的扩展: 类目Category, 延展Extension, 协议Protocol ( 二 )
- OC学习 -- Category(类目)
- OC中SEL,类别,继承,协议的使用
- OC中类别的小结
- 类的扩展 :子类 类目 Category
- 【OC学习-21】什么是类的类目category和类的延展extension?以及如何创建和注意事项
- Ryan的OC学习总结-----4 类别与扩展
- 黑马程序员——OC学习之分类category的使用
- iOS复习 OC语言 类目Category/类扩展Extension
- extern "C"的用法解析
- 多线程笔记
- git - 生成 ssh key for Mac
- Andriod Studio导入代码后中文乱码解决方案
- 二叉搜索树
- OC学习之道:OC中类别--Category类目的使用/Eetension类的扩展 的使用
- Python中如何遍历字典
- 程序的内存分配
- 条款04:确定对象被使用前已被初始化
- c++排序(快速排序)
- [leetcode]51 Two Sum
- COGS-313-和平委员会-POI2001-2-SAT
- 使用JPA进行数据操作
- java中Math.random()与java.util.random()的区别