【发布时间】:2011-10-20 14:42:30
【问题描述】:
为什么我们在 C# 中使用接口。使用接口有什么好处。请您解释一下这个概念,以便于理解和简单的接口示例?
【问题讨论】:
-
网上有很多教程可以解释这一点。你有什么具体的..
-
你的问题,是一般性问题,有太多不同的答案。 stackoverflow.com/questions/5661876/…
标签: c#
为什么我们在 C# 中使用接口。使用接口有什么好处。请您解释一下这个概念,以便于理解和简单的接口示例?
【问题讨论】:
标签: c#
接口是一种将……接口与实现分开的方式。
你可以说这是一个给我第 n 个素数的函数。就是这个界面。如果我是用户,我不在乎你如何计算它——所以我只需要接口。
接口也为多重继承提供了另一种选择——你可以只有一个基类,但可以实现多个接口。
例子:
interface IPrimeComputer {
int GetNPrime(int n);
}
class SieveComputer : IPrimeComputer {
public int GetPrime(int n) {
//compute the nth prime using a sieve
}
}
class MagicComputer : IPrimeComputer {
public int GetPrime(int n) {
//compute the nth prime using some magic that no one else can understand.
}
}
...
IPrimeComputer computer = new MagicComputer();
int nprime = computer.GetPrime(100);
computer = new SieveComputer();
nprime = computer.GetPrime(100);
【讨论】:
实现一个界面说嘿!看着我!我可以做这个。
接口适用于许多应用程序:
【讨论】:
是的,接口涉及到 C# 不支持多重继承这一事实,但这不是你应该使用接口的原因。正如彼得所说,这是一种将对象的实现与对象的功能分开的方法。接口定义了您可以对对象执行的操作(功能),但对象的实现定义了您的操作方式。
假设您正在制作一个图形程序,您可以在其中将形状打印到要旋转的屏幕上。然后你可能有一个接口IShape 定义了方法Rotate 和Draw 但这些方法的真正实现在于类Rectangle、Circle 等,因为你很可能想要使用多个形状。
【讨论】:
有关接口What are some advantages to using an interface in C#? 的优点,请参阅此 SO 问题
一个简单的接口示例可能是:
public interface IAnimal
{
void Sleep();
void Run();
void Talk();
}
然后接口将由一个类实现,该类将实现接口中指定的方法:
public class Dog : IAnimal
{
public void Talk()
{
Console.WriteLine("Ruff!");
}
public void Run()
{
Console.WriteLine("The dog runs after balls and cars.");
}
public void Sleep()
{
Console.WriteLine("ZZZZZZZZZZ");
}
}
不同的类会以不同的方式实现相同的方法:
public class Cat : IAnimal
{
public void Talk()
{
Console.WriteLine("Meow");
}
public void Run()
{
Console.WriteLine("The cat looks at you and says, 'Yeah, right...'");
}
public void Sleep()
{
Console.WriteLine("All the time - what else does a cat do?");
}
}
这些只是简单的例子,但应该会给你一个想法。
【讨论】:
一个好处是实现接口的类别无选择,只能以自己的方式实现接口的方法。
因此,如果您是接口的创建者,而其他程序员需要从他们自己的类中实现它,那么这些类将具有来自您接口的模式。
【讨论】: