在超类中创建时的Java调用函数

时间:2013-10-22 15:32:42

标签: java inheritance

我正在尝试用Java创建一个使用UnityScript语法和结构的游戏引擎,而且我现在已经弄明白了。我唯一能做的就是能够在从超类实例化一个类时调用函数。

示例:

对象超类:

public class Object {
   public Object(){
       Start();
   }
   public void Start(){
   }
}

Gameobject子类:

public class GameObject extends Object {
   public GameObject(){
   }
   public void Start(){
   }
}

我想要发生的事情是,当我创建一个新的游戏对象或从游戏对象扩展的任何东西时,在实例化时调用Start()函数,最好不使用super()语句。

2 个答案:

答案 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()方法