Java无限循环/调用

Jas*_*ers 2 java

嗨,我今天早上遇到了这个问题(我已经找到了解决方法)但是我很好奇为什么我的代码不能正常工作

    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);

         }
Run Code Online (Sandbox Code Playgroud)

通常它应该做(3) - >(4) - >(1) - >(2)但我得到(3) - >(4) - >(1) - >(3) - >(4) - >(1)...

我没有得到的是为什么classA函数(...)(1)会调用(3)而不调用(2)

Boz*_*zho 6

因为继承和多态.您已在子类中重写(标记此方法@Override)function(GL10 gl, boolean useGLUtils, boolean useMipMap)方法,因此每次在类的实例上调用此方法时B,将调用重写方法,而不是超类中的方法