无法应对继承

时间:2014-03-22 19:02:22

标签: java

我有(一些伪代码):

public class Thrd extends Thread{

    protected void letUsFinalize(){
        int a = 0; // Just for debugging.     
    }
}

public class FreeThread extends Thrd{

    @Override
    protected void letUsFinalize() {
        FreeThread.this.interrupt();
    }

}

请看看图片。我们的对象现在是FreeThread类(在Variables子部分中可见)。所以,我来到图片的上方断点,按Step into,我发生在较低的断点处。我的意思是我出现在类Thrd(超类)的方法中。

我该怎么做才能在这种情况下执行子类的方法?

enter image description here

1 个答案:

答案 0 :(得分:0)

如果您使用的对象是FreeThread的实例,则调用object.letUsFinalise()将从FreeThread调用该方法。

看起来你正在从超级类调用letUsFinalise(),因此无法调用子类'方法除非您使用静态对象(如下所示)。

public class SuperClass {

    public void method(){
        Objects.object.method();
    }

}

class SubClass extends SuperClass{

    @Override
    public void method(){
        System.out.println("I'm the sub class!");
    }

}

class Objects{

    public static SubClass object = new SubClass();
}

我建议您创建一个FreeThread的静态对象,并使用它来调用该方法,如上所示。