go语言中,虽然没有明确提出面向对象的概念,但是基于已有的语法设计,我们也可以写出面向对象的代码。go语言中的面向对象是借助struct结构体实现的。 (推荐学习:go)

Golang实现面向对象的两个关键类型是struct和interface,其中struct类似C++的普通类类型,interface则对应抽象类类型。

与C++采用public/protected/private指示成员和方法的可见性不同,Golang采用大小写标识可见性,即大写字母开头的成员/方法对外可见,小写开头的则属于类的私有成员,外部不可以直接访问。

此外,Golang与C++在类类型的定义上还有一个重要区别,那就是Golang在struct内只需要声明类的成员变量,而不需要在类定义体内声明或定义所有的方法,方法定义都在struct之外完成。

Golang通过struct定义类的属性,通过在func定义时传入类对象的方式定义类的方法,其中属性和方法的公有/私有属性是通过首字母的大小写决定的。

type Student struct {name  stringage   intmajor string}

Golang没有完整实现继承,而是通过组合的方式实现。组合类(子类)可以直接调用被组合类(基类)的公有方法,访问基类的公有属性,子类也可以定义自己的属性,以及实现自己特有的方法。

Golang的设计哲学之一就是简洁,通过大小写区分成员/方法的公有/私有属性,通过组合的方式实现继承,都是简洁哲学的体现。

Golang的interface类型定义的也是一个抽象的基类,它是一组方法的集合,任何完整实现这些方法的类型都被称为该接口的实现。由于抽象与多态是相辅相成的,或者说抽象的目的就是为了实现多态。

更多相关文章

  1. golang判断是否目录的方法
  2. go语言中函数与方法介绍
  3. Go语言中处理json数据的方法
  4. golang错误抛出的方法
  5. Go语言异常处理的方法介绍
  6. golang使用protobuf的方法详解
  7. golang解决中文乱码的方法
  8. golang判断错误类型的方法
  9. golang怎么自定义错误

随机推荐

  1. Android(安卓)使用Matrix进行图像变换
  2. android 网络下载图片 效率对比
  3. 要学android不可不学的android样例
  4. Android studioError:(13, 0) Gradle DSL
  5. [置顶] Android GradientDrawable高级应
  6. ndk for mac
  7. android寻找最适合资源过程
  8. 在Android Studio中查看android APP 日志
  9. Android中渐变效果的设置
  10. android ExpandableListView伸缩列表