码迷,mamicode.com
首页 > 其他好文 > 详细

GoLang中面向对象的三大特性

时间:2017-09-22 19:02:51      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:技术分享   包括   child   它的   通用   朋友   c#   aof   回调   

有过 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()  
}

GoLang中面向对象的三大特性

标签:技术分享   包括   child   它的   通用   朋友   c#   aof   回调   

原文地址:http://www.cnblogs.com/grimm/p/7576159.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!