为什么我似乎无法掌握接口?有人可以为我揭开界面的神秘面纱,还是给我一些好的例子?我一直在这里和那里看到界面弹出,但我还没有真正接触到界面的良好解释或何时使用它们。我在谈论接口与抽象类的上下文中的接口。
3 回答
LEATH
TA贡献1936条经验 获得超6个赞
接口允许您针对“描述”而不是类型进行编程,这允许您更松散地关联软件的元素。
可以这样想:你想与你旁边的立方体中的某人共享数据,所以你拿出闪存棒并复制/粘贴。你走到隔壁,那家伙说“那是USB吗?” 你说是的 - 所有的一切。它与闪光棒的大小无关,也不是制造商 - 重要的是它是USB。
同样,接口允许您实现开发。使用另一个类比 - 想象你想要创建一个虚拟绘制汽车的应用程序。你可能有这样的签名:
public void Paint(Car car, System.Drawing.Color color)...
这可以工作,直到你的客户说“现在我想画卡车”,所以你可以这样做:
public void Paint (Vehicle vehicle, System.Drawing.Color color)...
这会扩大你的应用......直到你的客户说“现在我想画房子!” 你从一开始就可以做的就是创建一个界面:
public interface IPaintable{ void Paint(System.Drawing.Color color);}
......并将其传递给您的日常工作:
public void Paint(IPaintable item, System.Drawing.Color color){ item.Paint(color);}
希望这是有道理的 - 这是一个非常简单的解释,但希望能够触及它的核心。
ABOUTYOU
TA贡献1812条经验 获得超5个赞
最简单的答案是接口定义了您的类可以执行的操作。这是一份“合同”,表示你的班级将能够做到这一点。
Public Interface IRollOver Sub RollOver()End InterfacePublic Class Dog Implements IRollOver Public Sub RollOver() Implements IRollOver.RollOver Console.WriteLine("Rolling Over!") End SubEnd ClassPublic Sub Main() Dim d as New Dog() Dim ro as IRollOver = TryCast(d, IRollOver) If ro isNot Nothing Then ro.RollOver() End IfEnd Sub
基本上,只要它继续实现该接口,您就可以保证Dog类始终具有翻转能力。如果猫能够获得RollOver()的能力,他们也可以实现该界面,并且当他们要求RollOver()时你可以同时对待Dogs和Cats。
添加回答
举报
0/150
提交
取消