你好
我今天早上碰到了这个问题(我已经找到了解决方法),但我很好奇为什么我的代码无法按我希望的那样工作
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
的实例上调用此方法时,都会调用该重写方法,而不是超类中的方法。