当子类被实例化时调用超类中的方法

5

如何创建一个Class,使得无论哪个类继承这个Class,方法都会被自动调用。如果我的问题有误,请帮我修改。下面是一些示例:

示例1:

在Unity中,当你继承MonoBehaviour时,您的方法会被自动调用。我不确定是否正确。

public class MyController : MonoBehaviour { 

   void Start()
    {     
      //Being Called Once
    }

    void FixedUpdate()
    {   
    //Being Called every update
}

在libgdx中
Game implements ApplicationListener {


    @Override
    public void render () {
        //Called multiple times
    }

}

根据我的理解和实际尝试,

以下是需要翻译的内容:

public abstract Test{

        protected Test(){
            onStart();
        }


        public abstract void onStart();
}


public class Test2 extends Test{

    public Test2(){

    }

    @Override
    public void onStart(){
        //Handle things here
    }

}

抱歉,我仍然不太清楚它是如何工作的或您称之为什么技术。
特别是在Unity中,创建多个扩展Monobehavior的控制器时,所有已实现的控制器方法都会被调用。是谁在调用这些类和方法?一些参考书籍将非常有帮助。
注:请编辑我的标题,以使用正确的术语。谢谢
1个回答

2
抱歉,但我仍然不知道它是如何工作的,或者你称之为什么技术。
在你的Java示例中,onStart方法被称为钩子或回调方法。
维基百科对hooking的定义如下:
在计算机编程中,术语hooking涵盖了一系列技术,用于通过拦截软件组件之间传递的函数调用、消息或事件来改变或增强操作系统、应用程序或其他软件组件的行为。处理这些拦截的函数调用、事件或消息的代码称为“hook”。
维基百科对callback的定义如下:
在计算机编程中,回调是一段可执行代码,它作为参数传递给其他代码,预期其他代码在某个方便的时间回调(执行)该参数。调用可以是立即的,如同步回调,也可以是稍后的,如异步回调。
任何实例化Test类中的Test方法的类都将导致调用instanceonStart方法。例如:
Test test = new Test2();//calls onStart in Test2.

话虽如此,我不确定在 MonoiBehavior 中是谁调用这些方法,但你对如何在 Java 中实现一个 hookcallback 的一般理解是正确的。

我明白了,这就是钩子技术。 - Keropee
@Keropee 从一般意义上来说是的。它也被称为“回调”。虽然它们有不同的含义,但现在它们可以互换使用。 - Chetan Kinger
感谢@Chetan Kinger,这对我的学习方向有很大的帮助。我会找到自己的路。 - Keropee
@Keropee 请记住,您不必总是在构造函数中调用您的“hooks”。如果您不希望它们在实例创建时立即触发,则这些“hooks”也可以在具体方法中调用。 - Chetan Kinger
好的。谢谢你的提示。 - Keropee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接