Go接口

luan_tianjiao · · 5694 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Go语言的编程哲学因为有接口而趋近完美

1.其他语言的接口:

C++,Java等主流编程语言中,接口主要作为不同组件之间的契约存在。对契约的实现是强制的,你必须声明你的确实现了该接口。

为了实现该接口,你必须从该接口继承

interface IFoo {
void Bar();
}
class Foo implements IFoo { // Java文法
// ...
}
class Foo : public IFoo { // C++文法
// ...
}
IFoo* foo = new Foo;

Java中抽象类和接口的区别:


1.抽象类,子类继承时,有些方法可以不用重写,关系是is-a;而implement一个接口,则需要实现其全部方法,关系是has-a。
抽象类中的非abstract方法在子类中可以重写,也可以直接继承。
2.接口是为了实现多重继承而引入的。接口本质上是一个纯虚类,且一个类可以从多个接口继承,Java接口是定义混合类型的理想工具。

接口中的全部方法都是abstract,都必须重写。


C++中抽象类(纯虚函数):


1、多态性
指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。
a.编译时多态性: 通过函数重载和运算符重载来实现的。
b 运行时多态性:通过继承和虚函数来实现的。
2、虚函数
虚函数是在基类中被声明为virtual,并在派生类中重新定义的成员函数,可实现成员函数的动态重载。
3、抽象类

包含纯虚函数的类称为抽象类。由于抽象类包含了没有定义的纯虚函数,所以不能定义抽象类的对象。


有一个很好的例子,可以帮助我们理解接口的作用

在一个银行系统中,总行下面会有分行,分行下面又会有支行..面对这样的结构,项目肯定是需要多人合作进行的..多人合作则会产生一个问题,

如:A负责浙江分行,B负责海南分行,C负责河南分行..因为每个地区的银行都会根据当地不同的情况会有不同的需求,但是他们又有一些相似或者一样的需求.

.如果ABC每个人都直接针对各自的分行进行代码的编写.则肯定会有大量重复的代码出现.而且最要命的问题是,每个人对方法,对变量的命名和编程的风格都会不同..

如果项目这个时候突然改变了需求,因此让A负责B的工作,B负责C的工作.C负责A的工作..可以想象ABC三个人的工作开展是怎么样的困难

这个时候如果使用了接口,类似这样的问题就可以在最大程度上缓解..对于相似或者一样的功能,项目经理定义了接口,有了接口,

就有了对这些功能制定规则和约束,而类继承了接口后,因此ABC三人就有了一个共同的接口,也可以说是有了一个共同的目标---相同的的方法,属性,事件.

他们有了外在的约定,唯一要做好的就是对接口的实现工作..而不必再考虑我要怎么做这个类呢?我能不能这么做呢?..因为最上层的接口告诉他们,按照我说的做就好了...

接口在这个时候就是准则..

可以查看下面的说法

http://wanghuan1989203.blog.163.com/blog/static/110890820201011289041373/


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:luan_tianjiao

查看原文:Go接口

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5694 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传