Categroy(分类或类别)

@Categroy又称扩展类,可以动态的为类添加一些新的方法(只是方法,不能添加成员变量)

@使用Categroy对类进行扩展时,不需要创建子类

@如果分类方法与原始类中的相同,则会隐藏原始方法,且不可在分类方法中通过super调用原始方法,这里与继承不同。

@Categroy是一种简单的方式,实现了类的方法的模块化,把不同的类方法分配到不同的类文件中去。

//Student.h  用于方法的声明

#import<Foundation/Foundation.h>

@interface Student : NSObject

- (void)test;

@end

//Student.m  用于方法的实现

#import"Student.h"

@implementaion Student

- (void)test{

NSLog(@"调用了test方法");

}

@end

在不改变上面两个文件的基础上,给Student动态添加一个方法。利用分类可以实现。

分类:

//Student+Test.h

// 给Student添加一个方法,所以要导入其头文件

#import "Student.h"

//类名后面的()代表分类,()里的Test是分类的名称

@interface Student (Test)

//分类只能扩展方法,不能增加成员变量

- (void)test2;

@end

//Student+Test.m

#import"Student+Test.h"

@implemention Student (Test)

- test2{

NSLog(@"调用了test2这个方法");

}

@end

接下来看如何使用

//main.m

#import<Foundation/Foundation.h>

#import"Student.h"

#import"Student+Test.h"//为了调用test2方法,必须将其导入

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

{

autorealesepoolP{

Student *stu = [[[Student alloc] init] autorealease];

[stu test]; //调用test方法

[stu test2]; //调用test2方法

}

}

时间: 2024-10-22 13:13:49

Categroy(分类或类别)的相关文章

IOS开发基础篇 -- 分类、类别

Category (分类.类别) 分类只能增加方法不能增加成员变量,可以声明属性,实际上会生成属性的set和get方法,但不会生成带下划线的成员变量,也不能添加成员变量(可以在不修改原来类模型的基础上拓充方法) inheritance >继承可以扩充成员变量和方法 但会产生新的类 extensions >类扩展(没有名字) 可以增加私有的成员变量和方法  一般写在要扩展类的.m文件内

分类(类别/Category)与 类扩展(Extension)

一.分类(类别/Category) 1.适用范围 当你已经封装好了一个类(也可能是系统类.第三方库),不想在改动这个类了,可是随着程序功能的增加需要在类中增加一个方法,这时我们不必修改主类,只需要给你原来的类增加一个分类. 将一个大型的类拆分成不同的分类,在不同分类中实现类别声明的方法,这样可以将一个类的实现写到多个.m文件中,方便管理和协同开发. 分类中的方法可以只声明,不实现,所以在协议不支持可选方法的时候(协议现在已经支持可选方法),通常把分类作为非正式协议使用. 2.语法格式 文件中的语

平均数编码:针对某个分类特征类别基数特别大的编码方式

原文:https://zhuanlan.zhihu.com/p/26308272 插入一条信息:特征编码一定要考虑是否需要距离度量,编码方式对距离度量的适应:例如:我们用one-hot编码颜色,向量正交,各个颜色之间的距离等同,如果此处用序数编码显然不太合适,但是我们用one-hot编码星期几就不好了,显然星期一和星期二的距离小于星期一和星期三的距离. 应用条件:某一个特征是分类的,特征的可能值非常多,那么平均数编码是一种高效的编码方式. 适用问题:平均数编码是一种有监督的编码方式,适用于分类和

黑马程序员---OC基础7【ARC概念】【ARC对象内存管理】【分类Category】

------- iOS培训.Android培训.Java培训.期待与您交流! ---------- [ARC概念]   1.指针的分类 1)强指针,默认的情况下,所有的指针都是强指针,关键字strong: 2)弱指针,_ _weak关键字修饰符的指针 2.ARC概念 自动引用计数 永远不要写retain和release.autorelease三个关键字 编译器会在编译的时候自动插入retain和release.autorelease, 是一个编译器的特性:“垃圾回收”是运行时的特性 3.ARC工

10. 混淆矩阵、总体分类精度、Kappa系数

一.前言 表征分类精度的指标有很多,其中最常用的就是利用混淆矩阵.总体分类精度以及Kappa系数. 其中混淆矩阵能够很清楚的看到每个地物正确分类的个数以及被错分的类别和个数.但是,混淆矩阵并不能一眼就看出类别分类精度的好坏,为此从混淆矩阵衍生出来各种分类精度指标,其中总体分类精度(OA)和卡帕系数(Kappa)应用最为广泛. 总体分类精度(OA):指被正确分类的类别像元数与总的类别个数的比值:OA值虽然能很好的表征分类精度,但是对类别像元个数极度不平衡的多类地物来说,其值收到像元数据较多类别的影

聚类-分类-回归 每天积累 每天进步 不要浪费时间了

从 coursa 上面学的是说,监督学习是指我们来教计算机如何"学习",非监督学习是指让计算机自己学习.监督学习又有两个大的分支,一个是 regression,另一个是 classification 既然是我们来教计算机如何学习那就必定有一个"标准答案".regression 是说,这个标准答案是连续的. 比如说,对三个月销售量的估计.classification 是说,这个标准答案是离散的.比如说,对是否患有cancer的判断.非监督学习就没有标准答案了.比如说,

类别和类扩展,从入门到懵逼。

先占坑 类别,又叫类的扩展.呵呵. 分类和类扩展的相似之处是:都可以为类添加一个额外的方法:呵呵: 类扩展 (Class Extension也有人称为匿名分类) 作用: 能为某个类附加额外的属性,成员变量,方法声明 一般的类扩展写到.m文件中 一般的私有属性写到类扩展 使用格式: @interface Mitchell() //属性 //方法 @end 与分类的区别 分类的小括号中必须有名字 @interface 类名(分类名字) /*方法声明*/ @end @implementation类名(

机器学习经典算法详解及Python实现---朴素贝叶斯分类及其在文本分类、垃圾邮件检测中的应用

摘要: 朴素贝叶斯分类是贝叶斯分类器的一种,贝叶斯分类算法是统计学的一种分类方法,利用概率统计知识进行分类,其分类原理就是利用贝叶斯公式根据某对象的先验概率计算出其后验概率(即该对象属于某一类的概率),然后选择具有最大后验概率的类作为该对象所属的类.总的来说:当样本特征个数较多或者特征之间相关性较大时,朴素贝叶斯分类效率比不上决策树模型:当各特征相关性较小时,朴素贝叶斯分类性能最为良好.另外朴素贝叶斯的计算过程类条件概率等计算彼此是独立的,因此特别适于分布式计算.本文详述了朴素贝叶斯分类的统计学

黑马程序员---OC---点语法、属性作用域、@property与@synthesize、id、构造方法、分类

------iOS培训.Java培训.Android培训, iOS学习型技术博客,期待与您交流------                                    点语法 点语法的本质是方法调用:调用对象成员变量的setter和getter 是编译器特性,编译器帮忙转的 p.age = 25;       // 等价于 [p setAge:25]; int a = p.age;     // 等价于 int a = [p age]; // 访问成员变量不能用点语法,而是 p->_a