美文网首页
多语言面向对象浅析

多语言面向对象浅析

作者: 大帅的大帅 | 来源:发表于2020-04-17 11:14 被阅读0次

说到面向对象这个话题,以前没少晕头转向。再没写java 之前,写过Pyhon ,写过Go ,写过PHP ,都没了解精髓。当然,主要是很多项目都是浅尝辄止,导致不深入。写了java 后,看了构造函数后,再理解面向对象,就比较清晰了,对比着看go 语言,发现也更清晰的能理解指针了。

go 语言没有Class的概念,只有struct和interface概念。 结构体里存放都是指定的数据的结构。其实跟java里的类的一个概念了。对比这看看吧。

需求:
一个功能函数,这个函数要用到特定类型的一个对象。 然后对这个对象进行处理。

go语言面向对象

先实现一个封装此对象的结构体

//写一个结构体
type IntCompareTest struct {
    val int
}

写这个函数,来调用结构体的数据类型。

func (a IntCompareTest) compare(b int) bool {
    return a.val > b
}

在这个compare函数里,在函数名前面写了变量a IntCompareTest,有这么几点讲究:

  1. 表示引入了一个 IntCompareTest 类型的变量 a。因为不是指针类型,所以引入的a的值,在函数内部计算时不能进行修改
    2.表示是个面向对象的变量,也就是如果变量在函数的前面,这个compare函数也就是相当于是IntCompareTest 结构体的方法。实例化结构体后,可以被调用。

第一句话好理解,第二句话怎么理解?我们看下执行调用的方法。

//结构体
type IntCompareTest struct {
    val int
}
//实现函数
func (a IntCompareTest) compare(b int) bool {
    return a.val > b
}
func main() {
       //这里就是实例化结构体了。在Java里叫构造函数传值
    m := IntCompareTest{9}
       //实例化后。m 这个对象就有了compare的方法。
    fmt.Printf("%v", m.compare(9))
}

Java语言面向对象

Java要是实现一个类并调用类的方法是如何做的呢,相对于来说,Java 更好理解了。

public class CompareTest {
   private int a;
    //构造方法,用于往函数里传值
    public compareTest(int a){
        this.a = a;
    }
 
   // 类方法
    public boolean compare(int b){
        return  this.a > b;   
    }      
}

调用方法,先new 一个这个类。通过构造方法,传入一个实例变量值。然后,再调用这个类的compare 方法。

public class TestCompare {
    public static void main(String[] args) {
       CompareTest one =  new CompareTest(10);
        System.out.println("nem" +one.compare(9));
    }
}

Python语言面向对象

在Python 中,对于类的关键字跟Jave 就有点相似了。
但是Python的一种弱类型语言,所以传入的对象类型,就交由函数本身来判断。
Python里也有“构造函数” 就是def init(self, a, b) 了,这里可以传入参数,就能被类对象所识别,哪怕类里没有初始化的这个参数。但是有一点不像Java。
例如例子中的 a 参数,在TestLoader 没有初始化。 也能被类方法compare所调用。

class TestLoader(object): # 这里的 (object) 可以为空。
    b = 10
    def __init__(self, a, b):
        self.a = a
        self.b  +=1 
   
    def compare(self, c):
        print(self.b)
        return self.a > c
      
     
if __name__ == '__main__':
   t=  TestLoader(10,0)
   t.compare(10)
    

好的,今天基于golang、java、 Python的面向对象的浅析就先写这么多。后面再研究新的体会。

相关文章

  • 多语言面向对象浅析

    说到面向对象这个话题,以前没少晕头转向。再没写java 之前,写过Pyhon ,写过Go ,写过PHP ,都没了解...

  • 【Python笔记】浅析python中的类(第一章)

    转载请注明出处 浅析python中的类 面向对象最重要的概念就是类(Class)和实例(Instance)面向对象...

  • 面向对象浅析

    ### 面向对象编程和面向对象编程语言 面向对象编程的英文缩写是 OOP,全称是 Object Oriented ...

  • 面向对象的基础

    学习要点: 讲师:杨应勇 许多语言本身就是面向对象(OOP)的,而PHP 用了几年才引入了这类功能。面向对象的诞生...

  • Java面向对象浅析

    面向对象概述 传统的结构化程序设计通过设计一系列的过程(即算法)来求解问题。一旦确定了这些 过程, 就要开始考虑存...

  • 浅析面向过程与面向对象

    在面试时经常会被问到面向过程和面向对象有什么区别,虽然都是编程的一种思想,但是他们的侧重点不同,我们从以下几个方面...

  • 浅析JavaScript之面向对象

    数据封装 Javascript规定,每一个构造函数都有一个prototype属性,指向另一个对象。这个对象的所有属...

  • php面向对象

    面向对象在很多语言,如c,java,c++,c#等语言中都有,它与面向过程的区别在于:面向过程实现功能时使用几十个...

  • 浅析面向过程、面向对象和面向协议编程

    本文简单分析面向过程,面向对象,面向协议三种编程方式。前面两种方式很多人都讲过,这里只是简单概述,更多地介绍面向协...

  • 看球学习两不误 看世界杯 学面向对象

    java零基础入门-面向对象篇(三) 类和对象 (上) 前面的基础打的差不多了,基础部分其实很多语言都大同小异,但...

网友评论

      本文标题:多语言面向对象浅析

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