我试图理解一些接口实现细节,需要一些基本的帮助。给出下一个代码:
public interface IGameObject
{
Vector3 GetSomePosition();
}
public interface IPlayer : IGameObject
{
void Die();
}
public class Player : GameObject, IPlayer
{
void Die() { }
}
我可以在其他类而不是Player类中实现IGameObject接口并使用其他类的实现吗?例如,一些名为" GameObjectImplementation"的特殊类,它实现了IGameObject接口。由于我不能从两个班级继承,我该怎么做?
----------------------------- EDIT ----------------- ----------
我现在发现的最佳解决方案是制作基类。
public abstract class PlayerBase : GameObject, IGameObject
{
public Vector3 GetSomePosition()
{
return this.transform.Position;
}
}
public class Player : PlayerBase, IPlayer
{
void Die() { }
}
还有其他建议吗?像注射或某种显式实现方式?或者这是最好的方法吗?
答案 0 :(得分:3)
如果你的意思是这样的话:
public class GameObjectImplementation: IGameObject
{
public Vector3 GetSomePosition(){
return null;
}
}
public class Player : GameObjectImplementation, IPlayer
{
public void Die() { }
}
然后是的,你可以。 Player
类仅从GameObjectImplementation
继承并通过基类实现IPlayer
(直接)和IGameObject
。
另请注意,实现方法必须可以从类外部访问(例如public),因为inteface定义了一个契约,只有外部可访问的东西才能实现。