Objective-C( Category 分类,非正式协议,分类延展)

分类:

主要是给原来类增加一些方法;不可以增加成员变量

Person (Person+eat)

非正式协议:

非正式协议就是类别,即凡是NSObject或其子类Foundation框架中的类增加的类别,都是非正义协议

给NSObject写一个类别,NSObject 类名(eat),NSObject子类都可继承里面的方法

分类(category)延展

延展类别又称类的扩展:

@interface Person类别 (空的)// 类扩展

{

  // 可以添加属性

int _age;

}

// 扩充方法

- (void)eat; // 相对的私有方法

@end

不能@implementation Person () @end中实现

直接在@implementation Person    @end中实现

时间: 2024-12-25 14:29:48

Objective-C( Category 分类,非正式协议,分类延展)的相关文章

objective C中继承、协议、分类和多态的实现

第一.objective C中继承的实现 在oc中只有实例变量会有权限控制,实例方法和类方法是没有权限控制的,这点与c++不同,OC默认的是protected,并且在声明权限控制时,没有分号 在OC中可以像C++一样用指针运算法来访问实例变量 Rectangle.h 文件代码: #import <Foundation/Foundation.h> @interface Rectangle : NSObject { int _width; int _height; } @property (non

iOS开发笔记系列-基础5(分类和协议)

分类 在Objective-C中,除了通过新建子类的方式来向类添加新方法外,还可以通过分类的方式.分类提供了一种简单的方式,将类的定义模块化到相关方法的组或分类中,它还提供了扩展现有类定义的简便方式,并且不需要访问类的源代码,也无须创建子类. 比如: //SomeClass+MathOps.h #import "SomeClass.h" @interface SomeClass (MathOPs) -(SomeClass *) add: (SomeClass *)s; -(SomeCl

oc中分类 扩展 协议的使用及区别

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

OC分类和协议

// //  ViewController.m //  OC11分类和协议 // //  Created by Zoujie on 15/9/13. //  Copyright (c) 2015年 Zoujie. All rights reserved. // #import "ViewController.h" #import "Fraction.h" #import "GraphicObject.h" @interface ViewContr

OC的分类和协议

分类和协议是OC中比较显著的俩个特点.分类的功能主要是实现类的扩展,协议则常常用在代理的实现上. 1.分类的声明 在分类的接口文件中,只允许新增方法,不能新增变量.语法形式: @interface 类名 (分类名) 新增的方法声明: @end 2.定义方法 在分类的实现文件中,对新增方法进行定义,语法如下: @implementation 类名 (分类名) 新增的方法的定义{ 语句: } @end 3.方法调用 分类的方法声明和定义之后,就可以进行调用了,语法如下: [对象名 新增方法名] 实例

黑马程序员-OC加强学习日记-分类、协议、block类型

------- ios培训. android培训.java培训.期待与您交流! ---------- 一.分类  Gategroy 1.创建一个分类 @interface  类名 (分类名) @end @implementation 类名 (分类名) @end 2.特点:(1)扩展已有类的功能 (2)分类中可以访问原有类的成员变量(定义在头文件中的成员变量) 3.语法步骤:(1)创建一个分类 (2)在分类中增加新方法的声明和实现 4.注意点:(1)分类不可以为原有类增加定义成员变量, @prop

Object-C非正式协议与正式协议的区别

一.非正式协议 显然这个名词是相对于正式协议而言的.在解释非正式协议之前,先引用两段话: 1.在<Cocoa设计模式>第六章类别的6.3.2把类别用于非正式协议一节中,这样写到: 非正式协议通常定义为NSObject的类别.类别接口中指定的方法可能会或者可能不会被框架类实际地实现.非正式协议位于一种设计灰区中.正式协议由编译器检查并且代表一种关于对象能力的保证,但是非正式协议不会做出保证----而只会给出提示. 2.苹果官方文档Cocoa Core Competencies一文中是这样介绍非正

Object-C中的非正式协议与正式协议

之前对 "非正式协议"一词不甚理解,查阅一番后就自己的理解简单梳理一下, 下面是苹果官方文档Cocoa Core Competencies一文中对非正式协议的介绍: An informal protocol is a category on NSObject, which implicitly makes almost all objects adopters of the protocol. (A category is a language feature that enables

Magento架构师的笔记-----Magento显示当前目录的父分类和子分类的分类名

在Magento目录的分类页面里,希望在左侧导航获取到父分类和子分类,可以用以下方法:打开app/your_package/your_themes/template/catalog/navigation/left.phtml 显示父分类的分类名 1 2 3 4 5 6 7 8 9 10 $currentCat = Mage::registry('current_category'); //如果是根目录,则显示当前目录 if ( $currentCat->getParentId() == Mage