oc可以实现多接口吗?具体实现 *** 作步骤!

oc可以实现多接口吗?具体实现 *** 作步骤!,第1张

  OC使用协议实现多继承,可以遵守多个协议实现多接口。category是OC中的类别,类别是用于给一个现有类添加新方法。重写类一般采用继承的方式,分类(类别)在给以个类添加同名方法后,会造成原有类中方法的实效,而继承重写的方法,依然可以在使用父类对象调用该方法。

  通过实现多个接口可以完成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];

  }

  

  抽象与接口的区别?

  声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

  接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义staTIc

  final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2717046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存