类的作用是什么?
这个问题好,让我想起了我最初学习编程的时候,我学的是C语言,最开始接触类的概念,那还是我在大学学《数据结构》的时候,那时候对类的理解就是,用来定义对象(结构)的,比如我们定义学生这个类,那么就可以通过学生这个类创建出许多的学生对象(结构体数组); 后来学习了Java语言,在Java里面,类其实就是用来定义对象的,并且可以继承,实现多态等等,于是我对类的认识加深了些; 在后来的工作中,因为项目的需求,需要用到Python进行一些业务上的处理,因此也了解到了Python之中没有类,但是可以用类的方法,也就是抽象的概念,用来做面向对象的编程;
后来,因为工作调动,我去到新的部门,新业务的代码是用Go语言开发的,虽然之前也没有接触过Go,但好在有Linux和Unix的基础,Go语言的语法比较像C语言,因此看了半天也是可以写出一些基本的结构的,但是Go里面的包管理,实在是有点让人摸不着头脑,于是就有了这样的疑问,到底什么才是“类”呢? 于是我就去看了GO语言的设计源代码(其实就是因为Gopkg.in无法下载到对应的依赖包,一着急就去看源码了),当我看了源码之后,顿时明白过来,所谓的类,其实就是一个结构体加一个指针,就可以了,甚至不需要这个结构体包含任何的数据成员!这样一想的话,一切就都明白了,所谓的方法、属性、索引器,都是在这个“类”的定义上面添加需要添加的东西即可。
所以,我认为类是一个抽象的存在,是用来定义对象的,而对象有可能是真实存在的(由堆上分配实体),也可以是虚拟的(如函数指针组成的链表)。