在Objective-C,怎么会在一个超类来确定,如果一个特定的方法是由它(调用)子(仁)覆盖叫什么名字?如何确定一个方法是由一个子类
例如,在下文中,子类Z不重写方法b为此基类X会做一些额外的缺省处理。然而,ZY在子类Y中实现了b,因此不需要默认处理。
// base class X
-(void)a
{
// do something
}
-(void)b
{
if("no_child_has_implemented_b") {
// add some default behavior
}
}
// child class Y : X
-(void)a
{
[super a];
}
-(void)b
{
[super b];
}
// child class Z : X
-(void)a
{
[super a];
}
// child class ZY : X
-(void)a
{
[super a];
}
感谢您的详细回复。我同时让它工作,但会审查整体设计,具体针对您列出的可能风险。 – Frans 2012-08-03 17:07:25
很酷。此外,如果您之前没有看到过,请稍微注意相关说明,查看“打开/关闭”原则:http://en.wikipedia.org/wiki/Open/closed_principle – occulus 2012-08-04 11:15:22