我有一个方法的基类。我想强制这个类的所有孩子在代码中的某个地方调用这个基础方法。如何强制孩子调用父母方法?
public class BaseClass
{
public void BaseMethod()
{
//Do something
}
}
public class ChildClass1 : BaseClass
{
public void ChildMethod()
{
BaseMethod();
}
}
public class ChildClass2 : BaseClass
{
public void ChildMethod()
{
//Doesn't call BaseMethod();
}
}
所以我想ChildClass1
要被罚款,但我想ChildClass2
抛出一个错误。
我想这样做的原因是因为我的基类有一个我不想忘记在我的子类中实现的值。例如,如果我提出一堆敌人的游戏,敌人类有一个速度调节剂,我不想忘记,包括在所有的孩子方法:
public class Enemy
{
public float x;
public float y;
private float speed;
public float GetSpeed()
{
return speed;
}
public void SetSpeed(float speed)
{
this.speed = speed;
}
}
public class Goomba : Enemy
{
public void Move()
{
x += 5 * GetSpeed();
}
}
public class Turtle: Enemy
{
public void Jump()
{
y += 5; //This is wrong. I forgot to adjust for speed.
//y += 5 * GetSpeed(); This is what I want to force myself to do
}
}
虽然实际上并不是为了运动。这是过分简单化。基类包含能力修饰符,其中的子类是使用修饰符的独特能力。
我该如何构造我的代码,以便需要孩子在代码中的某处调用特定的父方法?
你把它定义为一个接口 – Amit
遗忘的东西是不是一个很好的理由来改变你的代码。请记住下次。你会用一些高科技安全系统来替换你的普通门吗,只是因为你忘了锁定它们一次吗? – Dialecticus
你可以使用事件 - 但对我来说似乎很愚蠢。 – Hogan