• Go_15: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()  
    }
  • 相关阅读:
    Vue快速学习_第四节
    Vue快速学习_第三节
    Vue快速学习_第二节
    从N个元素的集合中随机取m个元素的算法实现
    Mysql加锁过程详解
    TFS 测试用例导入、导出工具
    TFS实现需求工作项自动级联保存
    Gulp自动构建Web前端程序
    Oracle PL/SQL Developer集成TFS进行团队脚本文件版本管理
    Python sphinx-build在Windows系统中生成Html文档
  • 原文地址:https://www.cnblogs.com/liang1101/p/6804840.html
Copyright © 2020-2023  润新知