多态的实现机制
while (clazz != NULL) {
Method* methods;
size_t methodCount;
size_t i;
if (findVirtual) {
methods = clazz->virtualMethods;
methodCount = clazz->virtualMethodCount;
} else {
methods = clazz->directMethods;
methodCount = clazz->directMethodCount;
}
for (i = 0; i < methodCount; i++) {
Method* method = &methods[i];
if (compareMethodHelper(method, name, returnType, argCount,
argTypes) == 0) {
return method;
}
}
if (! isHier) {
break;
}
clazz = clazz->super;
}
return NULL;