实现运行时多态性和继承

时间:2011-01-12 22:11:54

标签: iphone objective-c cocoa ios

在目标C中,java中接口的等价概念是什么?我想创建一个接口并定义一些公共变量和方法,这些变量和方法将由从我的接口继承的许多类共享。当外面的任何类想要使用子类时,它将获得我的接口的引用对象,它将指向正确的子类。

如何在Objective C中实现这一目标?

2 个答案:

答案 0 :(得分:5)

Java接口的Objective C等效称为“protocol”。

也可以找到一个小的介绍here,如果你想要一个完整的参考,那就是at Apple

答案 1 :(得分:5)

在Objective-C中,您可以通过使用Protocols来实现这一目标。协议基本上是Java中接口的前身,因此大多数行为应该是自然而然的。

协议声明如下所示:

@protocol Foo
-(void) foo;
-(int) boo: (int) arg;
@end

它可以由一个类实现。在下面的例子中,你会说MyClass符合Foo协议。

@interface MyClass <Foo>
{
}

@end

@implementation MyClass

-(void) foo {
    //do something
}
-(int) boo: (int) arg {
    //do something else
    return arg;
}

@end

最后,你可以像这样传递它们:

-(void) someMethod: (id<Foo>) arg;

如果您需要更具体地说明对象,也可以像这样使用它们:

-(void) someMethod: (NSObject<Foo> *) arg;