zoukankan      html  css  js  c++  java
  • Object-c的类可以多重继承么?可以实现多个接口么?如何实现?

    Object-c的类可以多重继承么?可以实现多个接口么? 

    Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;虽然OC在语法上禁止类使用多继承,但是在协议的遵守上却允许使用多继承。所以可以用协议来实现多继承。但是协议只能提供接口,而没有提供实现方式,如果只是想多继承基类的接口,那么遵守多协议无疑是最好的方法,而既需要多继承接口,又要多继承其实现,那么协议是无能为力了。多协议遵守比较简单,具体的实现方式这里就不讲了!

    现在ClassC需要继承ClassA中methodA、ClassB中methodB,具体的代码实现为:

    //定义ClassA以及其methodA

    @interface ClassA : NSObject {
    }

    -(void)methodA;

    @end
    //定义ClassB以及其methodB
    @interface ClassB : NSObject {
    }

    -(void)methodB;

    @end
    //定义ClassC以及其需要的methodA,methodB
    @interface ClassC : NSObject {
      ClassA *a;
      ClassB *b;
    }

    -(id)initWithA:(ClassA *)A b:(ClassB *)B;

    -(void)methodA;
    -(void)methodB;

    @end

    //注意在ClassC的实现

    @implementation  ClassC

    -(id)initWithA:(ClassA *)A b:(ClassB *)B{

           a=[[ClassA alloc] initWithClassA: A];//[A copy];

           b=[[ClassB alloc] initWithClassB: B];//[B copy];

    }

    -(void)methodA{

          [a methodA];

    }
    -(void)methodB{

          [b methodB];

    }

  • 相关阅读:
    宏定义中的常见使用
    VS 对于LINK fatal Error 问题 解决方案
    cocos2d-x中常见的场景切换
    给新建的Cocos2d-x 3.X的Win32工程添加CocoStudio库
    2048之军衔篇 反馈 有事留言
    http 错误代码表
    华为S5700交换机初始化和配置SSH和TELNET远程登录方法
    Linux修改网卡名
    Linux如何配置bond
    linux系统下如何挂载NTFS移动硬盘
  • 原文地址:https://www.cnblogs.com/penger/p/4239973.html
Copyright © 2011-2022 走看看