Simulate abstract classes and abstract methods in Objective C?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Creating an abstract class in Objective C
在Java中,我喜欢使用抽象类来确保一组类具有相同的基本行为,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public abstract class A { // this method is seen from outside and will be called by the user final public void doSomething() { // ... here do some logic which is obligatory, e.g. clean up something so that // the inheriting classes did not have to bother with it reallyDoIt(); } // here the actual work is done protected abstract void reallyDoIt(); } |
既然类B继承自类A,那么它只需要实现
如何在目标C中实现这一点?有可能吗?在目标C中是否可行?我的意思是,整个模式在目标C中似乎是不同的。例如,从我所理解的,没有办法禁止重写一个方法(比如在Java中用"最终")。
谢谢!
不重写目标C中的方法没有实际的约束。您可以使用Dan Lister在其答案中建议的协议,但这只适用于强制一致性类实现该协议中声明的某些行为。
目标C中抽象类的解决方案可以是:
1 2 3 4 5 6 7 8 9 10 | interface MyClass { } - (id) init; - (id) init { [NSException raise:@"Invoked abstract method" format:@"Invoked abstract method"]; return nil; } |
这样可以防止抽象类中的方法被调用(但只在运行时不同于Java这样的语言,可以在编译时检测到这一点)。
我想你会想用一种叫