我正在尝试用Java创建一个使用UnityScript语法和结构的游戏引擎,而且我现在已经弄明白了。我唯一能做的就是能够在从超类实例化一个类时调用函数。
示例:
对象超类:
public class Object {
public Object(){
Start();
}
public void Start(){
}
}
Gameobject子类:
public class GameObject extends Object {
public GameObject(){
}
public void Start(){
}
}
我想要发生的事情是,当我创建一个新的游戏对象或从游戏对象扩展的任何东西时,在实例化时调用Start()函数,最好不使用super()语句。
答案 0 :(得分:2)
如果排除super
语句,将自动调用父无参数构造函数,因此您的代码将按原样运行。
答案 1 :(得分:1)
修改方法名称以遵循惯例。
让你的超类实现一个private
方法,该方法执行其一般逻辑,然后调用start()
方法,可能是你的子类'。在超类的构造函数中调用此private
方法。
你的超类
public abstract class SomeObject {
public Object(){
objectStart();
}
private void objectStart(){
// do something general
start();
}
public abstract void start();
}
Gameobject子类:
public class GameObject extends SomeObject {
public GameObject(){
// implicitly calls super() which will call objectStart() which will call start()
}
@Override
public void start(){
}
}
现在,当SomeObject
的任何子类被实例化时,它的start()
方法将被执行。
如果您不希望该类是抽象的,只需实现一个无操作start()
方法