GoLang中面向对象的三大特性
2024-10-21 16:01:07
有过 JAVA 语言学习经历的朋友都知道,面向对象主要包括了三个基本特征:封装、继承和多态。封装,就是指运行的数据和函数绑定在一起,JAVA 中主要是通过 super 指针来完成的;继承,就是指 class 之间可以相互继承属性和函数;多态,主要就是用统一的接口来处理通用的逻辑,每个 class 只需要按照接口实现自己的回调函数就可以了。
作为集大成者的 Go 语言,自然不会在面向对象上面无所作为。相比较 java、C#、C++ 等面向对象语言而言,它的面向对象更简单,也更容易理解。下面,我们不妨用三个简单的例子来说明一下 go 语言下的面向对象是什么样的。
封装特性
package main import "fmt" type data struct {
val int
} func (p_data *data) set(num int) {
p_data.val = num
} func (p_data *data) show() {
fmt.Println(p_data.val)
} func main() {
p_data := &data{4}
p_data.set(5)
p_data.show()
}
继承特性
package main import "fmt" type parent struct {
val int
} type child struct {
parent
num int
} func main() {
var c child c = child{parent{1}, 2}
fmt.Println(c.num)
fmt.Println(c.val)
}
多态特性
package main import "fmt" type act interface {
write()
} type xiaoming struct { } type xiaofang struct { } func (xm *xiaoming) write() {
fmt.Println("xiaoming write")
} func (xf *xiaofang) write() {
fmt.Println("xiaofang write")
} func main() {
var w act; xm := xiaoming{}
xf := xiaofang{} w = &xm
w.write() w = &xf
w.write()
}
最新文章
- ThinkPHP5 助手函数
- 替换 data.frame 中的特殊的值
- hdu3555
- iOS 使用Storyboard 和 xib时的一些知识
- JavaScript屏蔽Backspace键
- Android开发 将数据保存到SD卡
- linux 服务器更主板后无法识别网卡处理过程
- POJ 1564 Sum It Up(DFS)
- 郁闷的C小加(一)(后缀表达式)
- 20.23. xmlrpclib — XML-RPC client access — Python v2.7.5 documentation
- IOS中 init和initialize
- SSM框架原理,作用及使用方法(非原创)
- cannot be run because the QueueReader subsystem failed to load
- js filter 数组去重
- oracle安装教程及常用命令
- web中的乱码处理
- Windows 内存管理
- 如何永久关闭选项";Tools >; Close Other Forms";
- Android 写一个Activity之间来回跳转的全局工具类(主要是想实现代码的复用)
- 猿团专访 |以技术推动发展 msup 成为企业经验智库
热门文章
- BoneBlack am335x利用SD卡烧写板卡上的emmc
- tkinter-clock实例
- java面试数据类型
- 为什么全部width:100%浏览器边缘存在留白?
- Spring的模块组成
- JavaSE基础之double数据类型的格式化
- 新的起点 Entry KINGSOFT
- Azure ServiceBus的消息中带有@strin3http//schemas.microsoft.com/2003/10/Serialization/�
- [POI2000]Repetitions
- hdu 2732 最大流 **