Aus*_*ore 3 java abstract-class abstract abstract-methods
我正在查看游戏中的一些代码,我遇到了一些我以前没见过的东西,我真的不知道最近发生了什么.
public abstract class Entity
{
public Entity(World world)
{
// irrelevent code
entityInit();
}
protected abstract void entityInit();
}
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?它呼吁时会发生什么entityInit()
?
从不实例化抽象类.只能实例化其具体的子类.因此,当调用具体子类(让我们调用它Foo
)构造函数时,它会调用super(world)
.然后调用Entity构造函数entityInit()
,该构造函数已被覆盖Foo
.因此它称之为Foo entityInit
具体方法.
请注意,这是不好的做法,因为entityInit
将在尚未完全构造的对象上调用该方法.因此,子类必须确保此方法不会访问它可能声明的任何字段,因为它们都将被单元化.