【发布时间】:2023-03-13 19:25:01
【问题描述】:
我在使用继承接口时遇到问题。我将在下面的示例中解释我的问题。假设我有接口IFlyable:
public interface IFlyable
{
IVerticalSpeed Speed { get; set; }
}
它包含IVerticalSpeed 接口。我创建了另一个名为ISpeed 的接口,它继承自IVerticalSpeed 接口:
public interface ISpeed : IVerticalSpeed
{
int MaxSpeed { get; set; }
}
在下一步中,我创建了一个类Fly,它实现了IFlyable 接口:
public class Fly : IFlyable
{
public IVerticalSpeed Speed { get; set; }
}
一切都很好...但是如果我想将IVerticalSpeed 接口替换为继承自IVerticalSpeed 接口的ISpeed 接口怎么办?
public class Fly : IFlyable
{
public ISpeed Speed { get; set; }
}
我认为一切都应该没问题,因为我的ISpeed 接口是IVertialSpeed 接口+ISpeed 接口包含的任何东西。但这是不对的。我收到错误消息:“Fly 没有实现接口成员 IFlyable.Speed (...)。为什么?
【问题讨论】:
-
你没有显示IVerticalSpeed
-
@Seabizkit - 不,但这不重要。
interface IVerticalSpeed {}就够了。 -
在亚当,不,更多信息会有所帮助。我看不出 IVerticalSpeed 是否具有 IVerticalSpeed 作为属性.... 奇怪的是,但问题也是如此,因此要求人们帮助提供有限的信息并不能描绘出整个画面。所以答案是
Fly不再将IVerticalSpeed实现为“IFlyable”所表示的属性
标签: c# inheritance interface