OC中用协议实现的多继承

#import <Foundation/Foundation.h>

@protocol Add <NSObject>
- (int)addA:(int)a b:(int)b;
@end

#import <Foundation/Foundation.h>

@protocol Sub <NSObject>
- (int)subA:(int)a b:(int)b;
@end

#import <Foundation/Foundation.h>

@protocol Mul <NSObject>
- (int)mulA:(int)a b:(int)b;
@end
==================================================以上是三个协议
下面是新建一个继承与NSObject的计算类Calculator
#import <Foundation/Foundation.h>
#import "Add.h"
#import "Sub.h"
#import "Mul.h"

//遵守多个协议
//类似于c++的多继承
@interface Calculator : NSObject <Add,Sub,Mul>

@end

#import "Calculator.h"

@implementation Calculator
- (int)addA:(int)a b:(int)b {
    return a+b;
}
- (int)subA:(int)a b:(int)b {
    return a-b;
}
- (int)mulA:(int)a b:(int)b {
    return a*b;
}
@end
==========================================
#import <Foundation/Foundation.h>
#import "Calculator.h"

/*
 现在有多个类,一个是加法器类(会算加法) 第二个类是减法器类(减法功能)第三个乘法器类(乘法)
 
 实现一个类分别可以进行+-

c++可以用多继承实现

但是OC没有多继承 但是OC可以通过协议来实现
 */

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Calculator *calc = [[Calculator alloc] init];
        
        NSLog(@"%d",[calc addA:1 b:1]);//2
        NSLog(@"%d",[calc subA:1 b:1]);//0
        NSLog(@"%d",[calc mulA:1 b:1]);//1
    }
    return 0;
}
时间: 2024-07-28 12:51:12

OC中用协议实现的多继承的相关文章

OC中协议, 类目, 时间, 延展, 属性

必须接受marryprotocol协议, id<marryprotocol>基于类型的限定, 才能给实例变量赋值 @property (nonatomic, assign) id<marryprotocol> husband; 避免Optitonal没有实现的功能 if ([_husband respondsToSelector:@selector(driver)]) { [_husband driver]; } @required//必须实现的协议, 默认协议 - (void)s

OC语言--协议

1.协议的介绍 1.1什么是协议 协议就是需要相互遵守的约定.规范.比如卖身协议,我们负责给Boss写代码,调bug,发布,Boss负责给我们发薪水,保险,福利:比如Http协议,两台计算机,遵守相同的约定,可以相互通讯.就像我们彼此交流,都遵守说中文这个约定或规范. 2. OC中协议 2.1OC协议概念 OC或IOS中的协议,就是一组方法(成员函数)的声明列表:声明方不需要实现这些方法,由遵守协议的对象来实现协议所规定的方法.(制定法律规范,让别人遵守). 2.2OC协议的使用步骤 制定协议

OC中协议的概念以及用法

OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习Java中的接口时候,看可以知道其实接口就相当于一种契约(协议),给他的实现类打上标记了,当然这个活在Java5.0之后,被注解替代了,因为注解就是为了此功能诞生的.协议就是定义了一组方法,然后让其他类去实现 下面来看代码:WithProtocol.h[objc]  view plaincopy 

黑马程序员_ 利用oc的协议实现代理模式

先说下代理模式是什么吧 定义: 为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象 而代理对象可以在客户端和目标对象之间起到中介的作用. 在看过李明杰老师的课程后,我对代理模式有了最初步的理解,虽然还很浅显 但是也明白了代理模式的 一些作用跟用法.首先使用代理模式可以降低耦合度.大大的增强了代码的弹性. 举个例子,小明想看电影,但是没时间买票 于是就拜托小强去买票 最简单的方式就是 建立一个person类(小明) 一个agent类(代理类) ag

OC的协议

oc协议 在Object-C中,委托和数据源都是由协议实现的.协议定义了一个类与另一个类进行沟通的先验方式. 它们包含一个方法列表,有些是必须被实现的,有些是可选的. 任何实现了必需方法的类都被认为符合协议. 协议,是通过网络,计算机使用者进行通讯后,互相进行约定规定的集合.两个类进行通讯,用协议就比较方便.下面是CocoaChina 版主"angellixf"为新手写的协议入门介绍以及代码例子,希望对刚入门开发者有所帮助一.说明  1.协议声明了可以被任何类实现的方法  2.协议不是

(Object-C)学习笔记(四) --OC的协议、分类、扩展

OC的协议 协议就是规则,定义了一个协议就相当于制定了一个规则.OC中的类可以遵守规则,遵守协议的类就相当于多了一种或几种能力.将一些属性和方法方法放到一个协议里,可以方便的添加进其他类里面. 协议的定义: @protocal @required 声明必须遵守的属性和方法  默认 @optional 声明可选遵守的属性和方法 @end 协议的遵守: @interface TRMyClass : NSObject<TRMyProtocol> 协议在尖括号中     若是遵守多个协议 @inter

OC中SEL,类别,继承,协议的使用

1.SEL SEL是selector的缩写,selector在OC中作用是定义一个方法变量,通过该方法变量来调用方法.我们在后面的UI中会经常用selector来调用事件方法.下面我将举两个例子来说明SEL的使用. 直接通过方法名来调用,我们先新建一个Student类,并在其中定义一个名叫Test的对象方法.并定义一个输出语句: -(void)test { NSLog(@"这是SEL的测试方法"); } 我们在Main方法中通过SEL调用就会输出以上结果,如下: SEL s = @se

黑马程序员------OC中协议和分类

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- OC中没有想C++中的多继承,是利用分类和协议来实现的. 分类是在不影响原有存在类的基础上,为原有类添加属性和方法. 协议:一般只是声明方法.遵守了协议的类,才会去实现协议中的方法. 协议一般和代理的一起使用.分类,一般是为系统中的类添加

OC中protocol、category和继承的区别

利用继承,多态是一个很好的保持"对扩展开放.对更改封闭"(OCP)的办法,也是最常见的一种方法.Objective C还支持另外两种语法来支持OCP:Protocol和Category.Protocol只能定义一套接口,而不能提供实现,变相的也是一种Abstract class的实现方式(oc 语法上本身不支持抽象基类).Category可以为类提供额外的接口和实现.那么到底三者(继承, Protocol,Category)在使用上到底有什么本质的区别呢?在我看来,protocol的作