Java无限循环/调用

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

         }

通常它应该做 (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/

相关文章:

java - Java RoundingMode.HALF_EVEN 是错误吗?

java - 使用 JApplet 绘制星星

Javamail 获取来自特定发件人的所有电子邮件

java - Guava Multimaps.filterKeys 与 NavigableMap.subMap() 相比性能较差

java - 根据 Tomcat 中的请求检查用户

java - 如何在每个步骤后检查相同的条件,而不用在 Java 中一遍又一遍地重复相同的代码?

java - Java 数组中的最大维数

java - JsonPath - 缓存 JSON 然后执行多个查询?

java - 在 java 上显示 JTextField

java - 用于可视化和实现椭圆曲线加密的工具