重写静态内部类的静态方法时出现Stackoverflow错误

Neh*_*pta 0 java static class inner-classes

public class StaticInnerClass {
 public static void main(String[] args) {


    //Outers out=new Outers();
    Outers.Inner1 in=new Outers.Inner2();
    in.display();
}
 }

class Outers
{
static class Inner1
{
    static void display()
    {
        display();
        System.out.println("Inner1");
    }
}

static class Inner2 extends Inner1
{
    static void display()
    {

        System.out.println("Inner2");
    }
}
}
Run Code Online (Sandbox Code Playgroud)

上面的程序给出了stackoverflow错误.请解释为什么它不显示"Inner1",因为静态方法不会覆盖.

Mic*_*rry 7

执行的静态方法基于静态类型,而不是实例类型:

Outers.Inner1 in=new Outers.Inner2();

因此,当你调用这一行时,静态类型是Outers.Inner1,因此它调用显示方法,该方法是该类的一部分,它重复调用自身(导致StackOverflowError.)