//获取Java中的father字段的id(最后一个参数是father字段的签名)
jfieldID id_father = env->GetFieldID(clazz,"father","Lcom/jni/demo/Father;");
//获取father字段的对象类型
jobject father = env->GetObjectField(obj,id_father);
//获取father对象的class对象
jclass clazz_father = env->FindClass("com/jni/demo/Father");
//获取father对象中的function方法的id
jmethodID id_father_function = env->GetMethodID(clazz_father,"function","()V");
//调用父类中的function方法(但是会执行子类的方法)
env->CallVoidMethod(father,id_father_function);
//调用父类中的function方法(执行就是父类中的function方法)
env->CallNonvirtualVoidMethod(father,clazz_father,id_father_function);
}
编译成功.dll文件,回到Eclipse中运行结果如下:

Child:function是调用env->CallVoidMethod(...)方法的
Father:function是调用env->CallNonvirtualMethod(...)方法的
这样就能够控制到底调用哪个类的function方法了。