从Unity 3D中获取此示例代码
public class Enemy : MonoBehaviour
{
void Start()
{
}
void Update()
{
transform.postion = Vector3.Lerp(transform.position, new Vector3(0, 1, 0), 5f * Time.deltaTime);
}
}
如您所见,课程Enemy
继承自MonoBehavior
,其中包含Start
和Update
方法。我所要做的只是在那里放入我自己的代码,但是,我想知道如何创建一个类似的东西,例如用Java构建一个Chat API,我会把它放到消费者那里来访问我的基类,并且将具有像“Update”这样的函数,每秒执行一次,而不必手动编写while循环。
如何创建可在子类声明时自动调用的基类函数?我对任何人都可以回答的编程语言持开放态度,我想知道的是这背后的逻辑。
答案 0 :(得分:1)
基类可以在其构造函数中创建一个计时器,该计时器设置为以1s间隔调用抽象方法。
public abstract class BaseClass
{
private Timer _timer;
protected BaseClass()
{
_timer = new Timer();
_timer.Tick += (sender, args) =>
{
Console.WriteLine("Calling Update.");
Update();
};
_timer.Interval = 1000;
_timer.Start();
}
protected abstract void Update();
}
public class InheritedClass : BaseClass
{
protected override void Update()
{
Console.WriteLine("Update was called.");
}
}
您可以在控制台应用中使用它来演示功能。
public class Program
{
public static void Main(string[] args)
{
var inheritedClass = new InheritedClass();
Console.ReadLine();
}
}