Nadeal

您现在的位置是:首页>所属分类

所属分类

Golang究竟是面向对象还是面向过程

Nadeal2022年2月18日 14:11个人博客282
以前总纠结于一门语言是面向对象还是面向过程的编程思想。通过编程思想来区分一门语言,其实这样的做法过于狭隘。一门语言是可以既能支持面向对象的特性,也能支持面向过程的特性。
对于初学一门语言,我总想着知道这是一门面向对象的,还是面向过程的编程语言。可是最后还是发现是我自己肤浅了。面向过程和面对对象是一种编程思想,不能说某某语言是不是面对对象或是面向过程,而是某某语言是否支持面对对象或面向过程。不能因为编程思想而禁锢了自己对编程语言的理解。
一门语言不可以用编程思想来区分。通过学习,我已知道的PHP、Python是既可以面向过程、也可以面向对象。既然这两种语言都曾经学习过,我还问如此粗鲁的问题,着实觉得自己不应该。那么对于Golang呢?通过近段时间的学习,我也发现它也是一门既支持面向对象的特性,也支持面向过程的特性。
学习过程中,有点像当初学Python的感觉一样,只是代码编写的风格不同。当然说这句话也只表明我对于Golang的学习还是不够的,停留在最基础层面。
那么,在这里也简单的说一说面向对象和面向过程的区别。
  • oop 面向对象

面向对象有两个重要的概念:类和对象。
什么是类?类是具备某项功能的抽象模型,在应用当中类需要实例化也就是new之后使用,这个时候就引出了对象。
什么是对象?对象是类实例化之后的一个产物,是一个实体。
面向对象的3个基础特征:
  • 封装

把客观事物封装成一个类,通过修饰符改变属性或函数的访问权限达到保护作用
  • 继承

子类继承父类,可以使用父类的公共属性和方法,可以实现接口,同时实现接口里的所有方法
  • 多态

覆盖和重载,子类继承父类,子类可以覆盖父类中的方法。一个类中可以同时拥有同一个函数名的方法,但是方法的参数不同,实现结果也不同。
 
面向对象的几个名词:类、对象、属性、方法、实例化。
面向对象优点:可扩展性高,可复用,易维护
面向对象缺点:编程复杂度高,性能比面向过程低(需要实例化类)
 
  • pop 面向过程

面向过程的代码执行是从上到下(从前到后),有一个个函数去实现步骤,使用的时候需要一个一个依次调用。
面向过程优点:性能比面向对象高(不用去实例化类),将复杂的问题流程化,进而简单化。
面向过程缺点:不易维护,可扩展性不高。
 
通过以上的描述,我们就大概知道它们的区别了。