【发布时间】:2017-10-21 03:42:26
【问题描述】:
我有一个小问题(还在学习 OOP)。我正在调用父类的“GoTo”方法,我希望在完成时通知该对象,但由于某种原因,调用了父类的回调方法而不是子类(即使我将子对象作为参数传递)。
问题:显然我遗漏了一些非常基本的东西,但我不确定是什么。我需要做什么才能调用孩子的“Imthere”方法而不是父母? (在父方法中强制转换为特定的子对象不适用,因为我想重用在不同子对象上截取的相同代码)。
public class Parent {
public void GoTo(Parent movingObject) {
//Random code here.
OnComplete(movingObject.Imthere);
}
protected void Imthere() {
//This gets called when some task is Completed!
Log("Parent");
}
}
public class Child : Parent
{
protected void Imthere()
{
//This SHOULD get's called when task is completed, but it's not.
Log("Child");
}
}
谢谢!
【问题讨论】:
-
我相信您需要在
Parent和override中将Imthere设为虚拟Child。 -
您在编译此代码时收到警告说它可能是错误的。新程序员注意:我们添加这些警告是有原因的。请注意他们。 他们会帮助您发现这些问题并加以解决。你能描述一下为什么你忽略了这个警告吗?是不清楚,还是很难看到,还是什么?
-
嘿。我没有收到任何编译警告,因为 Unity 没有显示它们。我在 VS 中编码,但一切都是由游戏引擎编译的。
-
@rootpanthera:弄清楚如何尽快访问这些警告。我确信有办法做到这一点。
标签: c#