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 string age int major string }
Golang没有完整实现继承,而是通过组合的方式实现。组合类(子类)可以直接调用被组合类(基类)的公有方法,访问基类的公有属性,子类也可以定义自己的属性,以及实现自己特有的方法。
Golang的设计哲学之一就是简洁,通过大小写区分成员/方法的公有/私有属性,通过组合的方式实现继承,都是简洁哲学的体现。
Golang的interface类型定义的也是一个抽象的基类,它是一组方法的集合,任何完整实现这些方法的类型都被称为该接口的实现。由于抽象与多态是相辅相成的,或者说抽象的目的就是为了实现多态。
以上就是golang 是面向对象的么的详细内容,更多请关注其它相关文章!