你好
我今天早上碰到了这个问题(我已经找到了解决方法),但我很好奇为什么我的代码无法按我希望的那样工作

    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的实例上调用此方法时,都会调用该重写方法,而不是超类中的方法。

10-07 13:13
查看更多