目標C中Java中接口的等價概念是什麼?我想創建一個接口並定義一些公共變量和方法,這些變量和方法將由許多繼承自我的接口的類共享。當任何外部的類想要使用一個子類時,它會得到一個我的接口的引用對象,它將指向正確的子類。實現運行時多態性和繼承
如何在Objective C中實現此目的?
目標C中Java中接口的等價概念是什麼?我想創建一個接口並定義一些公共變量和方法,這些變量和方法將由許多繼承自我的接口的類共享。當任何外部的類想要使用一個子類時,它會得到一個我的接口的引用對象,它將指向正確的子類。實現運行時多態性和繼承
如何在Objective C中實現此目的?
在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;