为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我似乎无法掌握接口?

为什么我似乎无法掌握接口?

为什么我似乎无法掌握接口?有人可以为我揭开界面的神秘面纱,还是给我一些好的例子?我一直在这里和那里看到界面弹出,但我还没有真正接触到界面的良好解释或何时使用它们。我在谈论接口与抽象类的上下文中的接口。
查看完整描述

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);}

希望这是有道理的 - 这是一个非常简单的解释,但希望能够触及它的核心。


查看完整回答
反对 回复 2019-08-27
?
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。


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 368 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信