我最初是一名Java程序员,现在使用Objective-C.我想创建一个抽象类,但在Objective-C中似乎不可能.这可能吗?
如果不是,在Objective-C中我能与抽象类有多接近?
我最初是一名Java程序员,现在使用Objective-C.我想创建一个抽象类,但在Objective-C中似乎不可能.这可能吗?
如果不是,在Objective-C中我能与抽象类有多接近?
通常,Objective-C类只有在作者将一个类记录为抽象类时才是按约定抽象的,只是在没有子类化的情况下不要使用它.然而,没有编译时强制来阻止抽象类的实例化.事实上,没有什么可以阻止用户通过一个类别(即在运行时)提供抽象方法的实现.通过在抽象类中的方法实现中引发异常,可以强制用户至少重写某些方法:
[NSException raise:NSInternalInconsistencyException
format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];
如果您的方法返回一个值,那么使用起来就容易一些
@throw [NSException exceptionWithName:NSInternalInconsistencyException
reason:[NSString stringWithFormat:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]
userInfo:nil];
因此,不需要从方法中添加return语句.
如果抽象类实际上是一个接口(即没有具体的方法实现),那么使用Objective-C协议是更合适的 Select .