美文网首页
OC-协议实现多继承

OC-协议实现多继承

作者: 紫云夕月 | 来源:发表于2021-08-25 15:36 被阅读0次
#import "ViewController.h"
#import "Programmer.h"
#import "Student.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    Programmer * grammer = [Programmer new];
    [grammer program];
    [grammer draw];
    [grammer sing];
    
    Student * student = [Student new];
    [student draw];
    [student sing];
}
#import <Foundation/Foundation.h>

// 编程技能
@protocol Program <NSObject>
- (void)program;
@end
// 绘画技能
@protocol Draw <NSObject>
- (void)draw;
@end
// 歌唱技能
@protocol Sing <NSObject>
- (void)sing;
@end

// 原本一个什么也不会的程序员
// 学会了多个技能
@interface Programmer : NSObject <Program, Draw, Sing>
// 继承的协议方法自动公有,无须声明接口
@end
#import "Programmer.h"

// 需要自行实现协议方法
@implementation Programmer
- (void)program {
    NSLog(@"I'm writing bugs!");
}
- (void)draw {
    NSLog(@"I can draw");
}
- (void)sing {
    NSLog(@"I can sing");
}
@end
#import "Programmer.h"

@interface Student : Programmer

@end
#import "Student.h"

@implementation Student
- (void)draw {
    NSLog(@"Student can draw");
}
- (void)sing {
    NSLog(@"Student can sing");
}
@end

相关文章

  • OC-协议实现多继承

  • Objective-C有多继承吗?没有的话用什么代替?

    OC没有多继承,通过设计模式实现多继承1.通过协议(protocol)实现,协议只能提供接口,不能提供实现方法缺点...

  • Objective-c的类可以多重继承么?

    Object-c的类没有多继承,只支持单继承,如果要实现多继承的话,可以通过类别和协议的方式来实现,OC类似于多继...

  • Swift 基础(0) - 协议、枚举 、异常

    面向协议 面向对象的问题: 不能实现多继承,且会导致继承关系变得复杂 面向协议的事例: 实现统一加载 nib的 协...

  • 一些总结

    1.虽然Objective-C在语法上禁止类使用多继承,但是在协议的遵守上却允许使用多继承。所以可以用协议来实现多...

  • 类别和延展

    类别和延展 OC中有多继承么,如果没有,用什么代替? OC不支持多继承,如果想要实现多继承的话,可以通过类别和协议...

  • 协议和 NSProxy 实现多继承

    OC 中一个类只有一个父类, 这就是单一继承, 但是我们可以用协议和 NSProxy 实现多继承 先说协议, 协议...

  • Objective-c能实现多层继承吗?

    答案是不行的。OC不支持多层继承,但可以通过遵守多个协议实现多继承。

  • 写Swift代码的正确姿势

    1.多用协议,少用继承 继承只能单继承,这无法解决实现多继承的功能,当我们已经继承了某个类,而又想继承其他类,这就...

  • POP面向协议编程

    一、继承 LGMonkey继承LGAnimal LGMonkey重写了leg属性、和eat方法 二、协议 实现协议...

网友评论

      本文标题:OC-协议实现多继承

      本文链接:https://www.haomeiwen.com/subject/hsquvltx.html