zoukankan      html  css  js  c++  java
  • GoLang中面向对象的三大特性

    有过 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()  
    }
  • 相关阅读:
    006 date find
    005 输出重定向 > >>命令 echo命令 tail命令
    总结,一周,
    mokey 学习
    树状,
    定制,
    萌芽,
    到底为什么,
    会,
    “恋爱”,一路走来,
  • 原文地址:https://www.cnblogs.com/grimm/p/7576159.html
Copyright © 2011-2022 走看看