嗨 我今天早上遇到了这个问题(我已经找到了解决方法)但我很好奇为什么我的代码没有按我想要的方式工作
public class classA
//(1)
public void function(GL10 gl){
function(gl,useGLUtilsBool, useMipMapBool);
}
//(2)
public void function(GL10 gl,boolean useGLUtils, boolean
useMipMap){
generateTexture(gl, useGLUtils, useMipMap);
}
}
@Override
public class classB extends
classA{
//(3)
public void function(GL10 gl, boolean useGLUtils, boolean
useMipMap) {
function(gl);
}
//(4)
@Override
public void function(GL10 gl) {
super.function(gl);
}
通常它应该做 (3)->(4)->(1)->(2) 但我得到的是 (3)->(4)->(1)->(3)->(4)->(1)...
我不明白为什么 classA function(...) (1) 会调用 (3) 而不是 (2)
最佳答案
因为继承和polymorphism .您已覆盖(用 @Override
标记)子类中的 function(GL10 gl, boolean useGLUtils, boolean useMipMap)
方法,因此每次调用此方法时B
类的实例,将调用覆盖方法,而不是父类(super class)中的方法
关于Java无限循环/调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4283020/