抽象类的Objective-C [重复](Abstract class for Objective-

2019-07-04 20:25发布

可能重复:
创建目标C的抽象类

我想提出在Objective-C项目的抽象类。

但是,我找不到思路诸如此类的“抽象”(在Java),“虚拟”(在C ++)。

不Objective-C中有一个抽象的概念? 谢谢。

Answer 1:

从形式上看,没有。 抽象类是由基类删空方法,然后记录该子类必须实现这些方法来实现。 该责任是笔者写匹配的产合同,而不是编译器检查缺少方法的类。

Objective-C的有协议 ,这是像Java接口。 如果您正在寻找相当于纯虚 C ++类或Java中的接口 ,这是你想要的。



Answer 2:

没有抽象类,但你可以使用一个的组合和协议 (这类似于Java的接口 )产生类似的东西。 首先瓜分你的抽象类为那些希望为提供默认的实现方法和那些你需要的子类来实现。 现在宣布在默认的方法@interface并在实施这些@implementation ,并宣布在所需的方法@protocol 。 最后从派生的子类class<protocol>它实现了协议的类- 。 例如:

@interface MyAbstract

- (void) methodWithDefaultImplementation;

@end

@protocol MyAbstract

- (void) methodSubclassMustImplement;

@end

@implementation MyAbstract

- (void) methodWithDefaultImplementation { ... }

@end

@interface MyConcreteClass: MyAbstract<MyAbstract>
   ...
@end

@implementation MyConcreteClass

// must implement abstract methods in protocol
- (void) methodSubclassMustImplement { ... }

@end

如果你关注过使用一类相同的名称和协议看可可那里NSObject遵循这一模式?

HTH



文章来源: Abstract class for Objective-C [duplicate]