由于C#对继承和实现使用相同的语法,即“:”。我们是说一个类实现一个接口还是继承一个接口?类可以从接口继承任何东西吗?
答案 0 :(得分:1)
接口没有要继承 *的东西,因此类将实现接口。
*这在C#版本8中将稍有变化,我们将获得default interface implementation,但出于理智的考虑,我想我们仍然会使用“实现”而不是“继承”
答案 1 :(得分:1)
类不能从接口继承,因为接口在定义上为空:它仅指示某些成员的强制实现。
“一个接口包含一组定义 类或结构可以实现的相关功能。”
例如:
interface IWritable {
void Write();
}
上面的代码仅确定需要在实现该类的所有类中拥有一个Write()
方法。
现在 tricky 部分。您可以将接口视为纯抽象类,即,它仅定义方法而没有实现。在其他编程语言(例如C ++)(顺便支持多重继承,因此无需“区分”任何区别)中,这些类是继承的。此外,您可以为这些方法甚至常量定义默认实现。实际上,这也将在C#中被允许。
因此,随着我们对实现方式和将来提供的功能的思考越来越多,划分“实现”和“扩展”或“继承”的界限变得模糊。
但是,在设计方面,它绝对是一种实现。
答案 2 :(得分:0)
类可以实现多个接口,并且一个类一次只能继承一个以上的类。
答案 3 :(得分:0)
类始终实现接口,并且从不继承任何接口,但是接口可以继承其他接口。
让我们看下面的示例,在这里我分别定义了两个接口 ISum 和 IMinus 。
接口的继承:ISum在IMinus中继承。
接口的实现:IMinus在FooClass中实现。
public interface ISum
{
int Sum(int a, int b);
}
public interface IMinus : ISum
{
int Minus(int a, int b);
}
public class FooClass: IMinus
{
public int Sum(int a, int b)
{
return a + b;
}
public int Minus(int a, int b)
{
return a - b;
}
}