《Go语言四十二章经》第二十五章 面向对象

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

《Go语言四十二章经》第二十五章 面向对象 作者:李骁 ## 25.1 Go 中的面向对象 我们总结一下前面看到的:Go 没有类,而是松耦合的类型、方法对接口的实现。 OO 语言最重要的三个方面分别是:封装,继承和多态,在 Go 中它们是怎样表现的呢? **封装(数据隐藏):** 和别的 OO 语言有 4 个或更多的访问层次相比,Go 把它简化为了 2 层: 1)包范围内的:通过标识符首字母小写,对象 只在它所在的包内可见 2)可导出的:通过标识符首字母大写,对象 对所在包以外也可见类型只拥有自己所在包中定义的方法。 **继承:** 用组合实现,内嵌一个(或多个)包含想要的行为(字段和方法)的类型;多重继承可以通过内嵌多个类型实现。 **多态:** 用接口实现,某个类型的实例可以赋给它所实现的任意接口类型的变量。类型和接口是松耦合的,并且多重继承可以通过实现多个接口实现。Go 接口不是 Java 和 C# 接口的变体,而且:接口间是不相关的,并且是大规模编程和可适应的演进型设计的关键。 ## 25.2 多重继承 多重继承指的是类型获得多个父类型行为的能力,它在传统的面向对象语言中通常是不被实现的(C++ 和 Python 例外)。因为在类继承层次中,多重继承会给编译器引入额外的复杂度。但是在 Go 语言中,通过在类型中嵌入所有必要的父类型,可以很简单的实现多重继承。 >本书《Go语言四十二章经》内容在github上同步地址:https://github.com/ffhelicopter/Go42 >本书《Go语言四十二章经》内容在简书同步地址: https://www.jianshu.com/nb/29056963 >虽然本书中例子都经过实际运行,但难免出现错误和不足之处,烦请您指出;如有建议也欢迎交流。

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

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

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