对不起任何较小的语法错误或其他错误,我正在使用Jitsi模块进行此操作,并且对Java不太熟悉,因此想确认正在发生的事情以及为什么以及如何对其进行修复。
public abstract class A { public A() { this.load(); } protected void load() { } } public class B extends A { private String testString = null; public B() { super(); } @Override protected void load() { testString = "test"; } }
使用按名称加载类方法创建类B的实例时,应用程序正在执行此操作:
这是预期的Java行为吗?是什么原因造成的?它是在1.7 JDK上运行的Java 1.6应用程序。
这是预期的Java行为吗?
是。
是什么原因造成的?
你在非最终超类构造函数中调用非最终覆盖方法。
让我们一步一步地看看会发生什么:
B()
A()
load()
testString
Object
null