Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
278 views
in Technique[技术] by (71.8m points)

Java中覆写父类方法的问题

有父类如下:

public class SuperClass {
    public void outerFunc(){
        innerFunc();//SuperClass.this.innerFunc()也没用
    }

    public void innerFunc(){   //A
        System.out.println("super");
    }
}

子类如下

public class SubClass extends SuperClass {
    @Override
    public void innerFunc() {      //B
        super.outerFunc();
    }

    public static void main(String[] args) {
        new SubClass().outerFunc();
    }
}

现在执行main()函数,会出现内存栈溢出!原因是调用父类的方法outerFunc()时,该方法内部会调用子类覆写的innerFunc()方法(也就是B处的方法)造成无限循环。
在不改变方法签名的情况下如何强制父类调用A处的方法而不是B
处?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

除非你在 SubClass 的方法中显式调用 super().innerFunc(),其他情况下,子类是不能访问父类被重写方法的


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share

2.1m questions

2.1m answers

62 comments

56.7k users

...