C# 实现接口的正确方法
我试图理解接口,我在这页看到了一个例子,但它本身并不是一个接口的例子 我对接口的理解:C# 实现接口的正确方法,c#,interface,C#,Interface,我试图理解接口,我在这页看到了一个例子,但它本身并不是一个接口的例子 我对接口的理解: 是实现(方法、属性、事件等)的类与接口之间的约定 因为在C#和.NET中,你不能多重继承,你可以使用接口,在那里你可以使用你不能继承的类的方法、属性等 所以这只是一个演示我尝试的: (不同班级) 我做错了什么 谢谢 我做错了什么 您没有在Son的继承链中的任何位置实现Hello。如果更改了以下任何一项,您将正确实现该接口: 儿子继承自母亲而非父亲 父亲继承自母亲 Father实现Hello Son实现H
- 是实现(方法、属性、事件等)的类与接口之间的约定
- 因为在C#和.NET中,你不能多重继承,你可以使用接口,在那里你可以使用你不能继承的类的方法、属性等
Son
的继承链中的任何位置实现Hello
。如果更改了以下任何一项,您将正确实现该接口:
继承自母亲而非父亲儿子
继承自母亲父亲
实现Father
Hello
实现Son
Hello
如果有多个类要重用其实现,那么组合通常是最好的方法。
Son
类将引用父对象
和母对象
对象,并通过属性公开它们,或创建传递属性和方法来访问底层实现。我们使用接口来处理抽象而不是具体实现,为什么?简单的回答它使测试很容易用假类替换我们的类,并且它创建了模块化应用程序(OOP)
要修复代码,必须更改此行以转到接口变量而不是类:
IMother son1 = new Son();
son1.Hello() // --> Now exists.
除非在子类中实现接口方法,否则代码无论如何都不会工作
class Son : Father, IMother
{
public string Hello()
{
throw new NotImplementedException();
}
}
如果您不想在子类中实现接口方法,并且希望在母类中访问该方法,那么您必须在子类中继承父类而不是母类。
Son
不实现IMother。Hello
代码没有按原样编译,您必须在子类中实现Hello()。你怎么能这样做呢?一般来说,儿子不是父亲和母亲。这使得这个例子令人困惑,这些都是令人讨厌的家庭关系。这只是一个例子,除了我现在不担心的设计之外。谢谢你。我现在明白了,如果儿子和父亲从祖父和父亲那里继承的“祖父”、“父亲”和“儿子”也有儿子可以使用的方法,而不是“父亲”、“母亲”,这将更有意义。因此,在这种情况下,我使用了一个接口,我看到了继承的“金字塔”。谢谢。你说“我们使用接口来处理抽象而不是具体的实现”是什么意思?您能给我举个例子吗?@DStanley我提到了这一点,并演示了如何实现Hello方法。@Nickso的例子是IMother myClassVar=new-Son();然后在第二行,您可以说myClassVar=new Mother();您可以使用for类来切换实现,实现相同的interfaceAh,这非常酷,所以我的类实例可以更改为另一个。我是否需要一个接口来执行此操作?不,OP“不必更改此行以转到接口变量而不是类”-除非IMother
在Son
中显式实现。
class Son : Father, IMother
{
public string Hello()
{
throw new NotImplementedException();
}
}