【问题标题】:Calling methods from a super class when a subclass is instantiated实例化子类时从超类调用方法
【发布时间】:2015-09-18 04:30:14
【问题描述】:

您将如何创建一个Class,无论哪个类扩展Class,方法都会自动调用/调用。如果听起来有误导性,请编辑我的问题。我只是展示一些示例

示例 1:

当你扩展monobehavior 时,你的方法会被自动调用。我不知道我是否正确。

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
    }

}

很抱歉,但我仍然真的不知道它是如何工作的,也不知道你如何称呼这种技术。

特别是在统一中,当创建多个扩展Monobehavior 的控制器时,所有已实现的控制器方法都会被调用。谁在调用这些类和方法?一些关于这方面的参考资料或书籍将是一个很大的帮助。

注意:请修改我的标题,以便在此使用正确的术语。谢谢

【问题讨论】:

    标签: java c# oop inheritance abstract-class


    【解决方案1】:

    很抱歉,我仍然不知道它是如何工作的,也不知道你如何称呼这种技术

    在您的Java 示例中,onStart 方法被称为挂钩或回调方法。

    维基百科对hooking的定义如下:

    在计算机编程中,挂钩一词涵盖了一系列技术,这些技术通过拦截软件组件之间传递的函数调用或消息或事件来改变或增强操作系统、应用程序或其他软件组件的行为。处理此类截获的函数调用、事件或消息的代码称为“挂钩”

    维基百科定义callback如下:

    在计算机编程中,回调是一段可执行代码,它作为参数传递给其他代码,期望在某个方便的时间回调(执行)该参数。调用可能像同步回调一样立即发生,也可能像异步回调一样在稍后发生

    任何从Test 类实例化Test 方法的类将导致调用instanceonStart 方法。示例:

    Test test = new Test2();//calls onStart in Test2.
    

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

    【讨论】:

    • 我明白了。所以这很吸引人。
    • @Keropee 一般来说是的。它也称为callback。虽然它们有不同的含义,但它们现在可以互换使用。
    • 感谢@Chetan Kinger,这对我应该从哪里开始学习很有帮助。我会找到路的。
    • @Keropee 请记住,您并不总是在构造函数中调用hooks。如果您不希望在创建实例后立即触发这些hooks,也可以在具体方法中调用它们。
    • 好的。感谢您的提示
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2012-04-25
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 2011-10-24
    相关资源
    最近更新 更多