Есть ли способ назначить много сигнатур метода интерфейса для одной реализации?
Например, все, что ITransformable
может быть перемещено по вектору или тройке координат:
public interface class ITransformable
{
public:
void move(double x, double y, double z);
void move(Vector ^ offset);
};
Такая запись обязывает программиста реализовать оба метода в каждом дочернем классе, но только один из них будет иметь полезное тело, а другие будут ссылаться на первый как
.
public ref class Thing : public ITransformable
{
virtual void move(double x, double y, double z)
{
//Each child implements it in it's own way
...
}
virtual void move(Vector ^ offset)
{
//It is the same for all childs, copy it and paste everywhere
move(offset->x, offset->y, offset->z);
}
}
Есть ли что-то в этом роде:
public interface class ITransformable
{
public:
//Implement me
void move(double x, double y, double z);
//Need no overriding anymore, just use implementation of the method above
void move(Vector ^ offset) : move(offset->x, offset->y, offset->z);
};
без множественного наследования (скажем, Thing
унаследовал некоторый неинтерфейсный класс, поэтому ITransformable
не может быть абстрактным классом).