У меня есть базовый класс с методом. Я хочу заставить всех детей этого класса называть этот базовый метод где-то в своем коде.Как заставить ребенка вызвать родительский метод?
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
ошибку.
Причина, по которой я хочу это сделать, состоит в том, что мой базовый класс имеет значение, которое я не хочу забывать реализовать в своем дочернем классе. Например, если я делаю кучу врагов для игры, а класс Enemy имеет модификатор скорости, я не хочу забыть включить, что во всех методах детей:
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
}
}
Хотя ему на самом деле не для движения. Это упрощение. Базовый класс содержит модификаторы возможностей, где класс children - это уникальные способности, которые используют модификаторы.
Как я могу структурировать свой код таким образом, чтобы ребенок должен был вызвать определенный родительский метод где-то в коде?
Вы определяете его как ЗАБЫВАЯ вещи интерфейс – Amit
это не причина, чтобы изменить код. Просто запомните это в следующий раз. Вы замените свою обычную дверь какой-нибудь высокотехнологичной системой безопасности, только потому, что вы забыли заблокировать их один раз? – Dialecticus
Вы можете использовать события - но мне кажется глупым. – Hogan