1. 程式人生 > >iOS協議實現多繼承

iOS協議實現多繼承

1、單繼承中父類可以宣告成員變數和方法,子類繼承父類之後,子類會繼承父類所擁有的成員變數和成員方法,子類可以不寫父類的方法。

2、協議中不可以宣告變數,只能宣告方法,然後由遵守協議的類實現方法

3、因為一個類中可以遵守多個協議,所以一個類中可以繼承多個類的方法,但是實現則要在本類中實現。(協議多繼承的本質)

ps:總的來說單繼承可以繼承父類的屬性方法並且不用重寫父類方法可以使用,但協議多繼承只能繼承方法,並且要重寫協議方法,可以理解成tableView這種型別的控制元件。

接下來是例項:(參考連結https://my.oschina.net/u/2410306/blog/522755)

#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,constchar * 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

    }  

return0;}

}