1. 程式人生 > >GoLang中面向對象的三大特性

GoLang中面向對象的三大特性

面向 c++ amp pan 理解 interface tool 函數 inter

有過 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中面向對象的三大特性