美文网首页
浅谈GO的面向对象

浅谈GO的面向对象

作者: Daemon_Shell | 来源:发表于2018-05-25 12:35 被阅读0次

        学习了一段时间 go 语言,用两句话来总结自己的感受:

        脚本语言的语法,C++语言的效率,总之就是一个字:“爽”!

        这里总结一下go面向对象的特征,如有错误,欢迎大家指正。

        面向对象三大特征:封装、继承、多态,我们一一展开。

    1. 封装

        和别的 OO 语言有 4 个或更多的访问层次相比(一般包括:public, private, default(package内可访问), protected),Go 把它简化为了 2 层:

         a. 包范围内的:通过标识符首字母小写,`对象` 只在它所在的包内可见

         b. 可导出的:通过标识符首字母大写,`对象` 对所在包以外也可见

        如:

        package  test

        function f1()  {......}

        function F2()  {......}

         f1,F2函数在test package内部都是可以访问的,在package外部只有F2函数可以访问。该设计的好处就是简单,不好的地方就是与其他OO语言访问控制灵活性不够;但GO设计原则就是简单优雅,简单就是美。

    2. 继承

        用组合实现:内嵌一个(或多个)包含想要的行为(字段和方法)的类型;多重继承可以通过内嵌多个类型实现。如:

        type  A struct{

            StrA string

       }

        func  (a *A) Methoda() {......}

        type  B struct{

             StrB string

        }

        func  (b  *B) Methodb() {......}

        可以用如下方法采用多重继承:

        type  C  struct  {

            A

            B

            StrC  string

         }

         此时C就继承了A,B,同时也继承了A,B的数据成员和方法。与C++,JAVA比起来,GO没有 class的概念,实现继承也不用使用关键字,  c++使用“:”实现继承,JAVA使用extends关键字实现继承。

    3. 多态

        用接口实现:某个类型的实例可以赋给它所实现的任意接口类型的变量。类型和接口是松耦合的,并且多重继承可以通过实现多个接口实现。Go 接口不是 Java 和 C# 接口的变体,而且:接口间是不相关的,并且是大规模编程和可适应的演进型设计的关键。

        ----引用于《The Way to Go》

        type  A  interface  {

            func Method() {....}

        }

         如果某个类型实现了接口A的所有方法,则默认地实现了接口A

         type S struct {...}

         func  (s *S) Method()  {......}

         以上只是简单说明了GO语言面向对象的特征,由此可以发现GO几个重要的设计原则:

         a.  语言语法设计简单,简单就是美;

         b.  松散类型,类型灵活;

         c.  力求减少程序员工作量,复杂的工作由编译器来完成;

          个人认为GO是目前效率和简洁性结合最完美的语言,被成为“21世纪的C语言”绝对不是浪得虚名;从各大招聘网站可以看出,GO已经在前后端应用全面展开,Android移动端也已经支持,而且会挑战C++的地位,在中间件领域更具优势。所以GO会在各个领域全面展开应用,也欢迎大家加入到学习GO语言的行列中。

    相关文章

      网友评论

          本文标题:浅谈GO的面向对象

          本文链接:https://www.haomeiwen.com/subject/otsyjftx.html