有人可以解释C#中接口的确切使用吗?有人可以解释C#中接口的确切使用吗?
回答
这已经在这里讨论了很多次,在过去,这是很难挑选任何一个重复了这个问题。
为了节省重复之前所说的话的时间,并开始检查结果。
用最简单的术语来说,接口表示一个或多个类可以做什么做,尽管在各种类中implimentation可能会有所不同。
必须做,不可以做。 – 2010-05-11 05:22:02
Polymorphism 您可以使用2个类来实现相同的接口,而不必确切地知道它是哪个具体类。它有助于保持代码松耦合。
详细一点会有所帮助! – user337911 2010-05-11 05:24:47
想象一下拥有一家生产汽车的工厂的情况。你知道,每部车辆具有发动机和能够启动,所以你具备以下条件:
interface IVehicle
{
Engine vehicleEngine { get; set; }
bool StartEngine();
}
现在,工厂生产的其他车辆的阵列,所以例如卡车和普通汽车:
public Car : IVehicle
{
// MUST implement vehicleEngine and StartEngine:
public Engine vehicleEngine { get; set; }
public bool StartEngine()
{
// Cars needs to do xyz to start
}
public int MaxNumberOfPassenger { get; set; } // Specific to Car
}
然后:
public Truck : IVehicle
{
// MUST implement vehicleEngine and StartEngine:
public Engine vehicleEngine { get; set; }
public bool StartEngine()
{
// Trucks needs to do abc to start
}
public int MaximumLoad { get; set; } // Specific to Truck
}
因此,这迫使所有车辆实行特定的成员落入车辆的范畴,但随后也可以专门用自己独特的成员。
在这里,我应该在接口中签署这些方法,然后在我的课程中实现 ?我可以直接在我的课堂上做,而不是使用界面? – user337911 2010-05-11 05:33:15
所以你可以绕过一辆汽车或一辆卡车,当你通过的时候并不重要。 TestTheVehiclesEngine(IVehice theVehicle){theVehicle.StartEngine(); } - 无论是汽车还是卡车都无所谓,因为它们都实现了IVehicle,因此都采用StartEngine方法。查找多态性 – 2010-05-11 05:48:17
使用接口的另一个原因是它允许你将设计从你的实现中解耦出来并使你的代码可测试。如果你的类在构造函数中要求一个接口,而不是具体的实现,你可以换掉你的具体类来模拟。 – 2010-05-11 21:06:59
接口定义了可以实例化的类必须实现的最低要求。它通过方法表达了这一点。
例如,接口可以定义一个称为富函数,它接受一个整数,并返回一个布尔值:
public interface ICanFoo
{
bool Foo(int number);
}
实现该接口还必须实现此方法的任何类:
public class Fooable : ICanFoo
{
public bool Foo(int number)
{
// do something
}
}
方法中的实现取决于正在实现接口的特定类。
通过使用接口,您不再关心实现是编译时间,而是规范。你可以这样调用:
ICanFoo myFooable = ...
bool success = fooable.Foo(4);
fooable的实际类型可以是实现ICanFoo因为你知道这ICanFoo总是定义为Foo方法的方法实现任何类。
- 1. 有人可以解释C#CngKey.Create吗?
- 2. 有人可以解释吗?
- 3. 有人可以解释使用SBT的正确方法吗?
- 4. 有人可以解释iOS4的CMTime吗?
- 5. 有人可以解释C中的dup()吗?
- 6. 有人可以在Go中解释这个接口的例子吗?
- 7. 有人可以解释respond_to吗? :每?
- 8. 有人可以解释参数autovacuum_naptime吗?
- 9. 有人可以解释行结束吗?
- 10. 有人可以解释ContactsContracts吗?
- 11. 有人可以解释iFrames吗?
- 12. 有人可以解释WebKit吗?
- 13. 有人可以解释这一点吗?
- 14. 有人可以解释descendantFocusability = afterDescendants吗?
- 15. 有人可以解释一下吗?
- 16. 有人可以解释Spring Security BasePermission.Create吗?
- 17. 有人可以解释facelets吗?
- 18. 有人可以解释错误吗?
- 19. 有人可以解释ja_JP.UTF8吗?
- 20. 有人可以解释DBCC DROPCLEANBUFFERS吗?
- 21. 有人可以为我解释COMTIMEOUTS吗?
- 22. 有人可以解释这个宏吗?
- 23. 有人可以请解释WaitForSeconds()吗?
- 24. 有人可以解释MustOverride吗?
- 25. 有人可以解释__declspec(裸体)吗?
- 26. 有人可以向我解释runQueryOnBackgroundThread吗?
- 27. 有人可以解释在iOS中使用initWithNibName给我吗?
- 28. 在iphone编程中使用标签 - 有人可以解释吗?
- 29. 有人可以在C#中解释这种语法吗?
- 30. 有人可以在Objective-C中解释函数名吗?
它们使接口更容易。 – 2010-05-11 05:10:57
“解释”有趣的错字(对我们美国人来说) – 2010-05-11 05:12:29
可能的重复[如何知道何时创建界面?](http://stackoverflow.com/questions/444245/how-will-i-know-when-to-create-an-interface) – 2010-05-11 06:41:58