一. 构造函数
(描述类中,有许多构造函数,其函数名和描述类的类名是一致的,但是创建类的类名就比较多样了。)
构造函数也属于面向对象中的一个小知识点。构造一词没见过,但是函数我们是清楚地。这说明,构造函数知识点中,
重点集中在“构造”上。虽然重点在构造上,但是其本质还是函数。单独分出一类,自然是起到的作用稍有不同。
现在介绍的另外一种函数,叫做构造函数。有什么特点(特点换个词怎么说),怎么用,格式是什么样的。(对于java中每个知识点的学习方法,要进行一个整理)
之前在学习函数时,我们说函数有返回值类型,函数名,参数列表(这是函数的核心)这三样东西。同时,函数中又分出一个特殊的种类,主函数。它的定义格式,和名称都是不能变的。它是被java虚拟机所识别的,写成别的形式,jvm就无法识别。那么,构造函数又有什么特点。
一般函数,主函数,构造函数。
构造函数的核心在函数,函数的核心在返回类型,函数名和参数列表。
二.
为什么要学习构造函数和构造函数用来做什么是一个东西,正反说。
构造函数的特点:
1. 函数名和类名相同。(特点也代表着书写格式) 为什么要相同?
2. 不用定义返回值类型。
意味着这个函数没有返回值,但凡有值回来,必须用一种类型来存储。一种类型来存储,使人联想到,类型某种意义上来说,
代表着所占内存空间的大小。有类型,自然表示有固定大小的内存空间,可以用来存储一些数据。
之前介绍的无论是功能化的函数,还是主函数,返回值类型都是存在的。即使没有返回值,返回值类型也是有的。主函数的返回值类型
是void类型。
构造函数没有返回值类型,意味着这个函数没有具体结果的。函数是个功能,功能运算完通常会有结果。构造函数没有结果,也就说明没有返回值。
稍微介绍一下构造函数怎么书写。
功能它有特点,除了结果以外,它还有未知内容,换句话说,这个功能在实行的时候,有没有一些参与运算的数据,就是参数。
Person(),变量和函数的最大特征就是,一个有(),一个没有()。
此处的构造函数是空参数的,定义中只是要求了没有返回值类型,而并非说没有参数。(运算的时候,需要未知内容)如果没有未知内容,或者说参数,那么这里构造函数初始化就相当于没有进行任何操作。
定义这种特殊类型的函数,肯定有它的用途。(如果描述类中,没有定义构造函数,系统会自动分配一个空参数的构造函数么?)
构造函数不光可以初始化对象的成员变量,还可以输出。只是一般将其局限在初始化,这里的Person()方法中,就是一个输出语句。
(对于这里private修饰符的作用,忘记了)
这个构造函数是定义在描述类中的。主函数中要存放很少的东西,使用的时候调用即可。
类描述完了,下面开始创建对象来封装age,name这样的数据,同时再调用,其实上面截图的描述类中一共应该有四个类,除了上面两个,还应该有getage,getname。
现在讲述的不再是数组,思维要从数组变换为面向对象的描述类,和创建类。创建一个Person类对象,给它命名。
接着DOS直接运行源程序,结果如下
创建对象的类中,只有一条创建语句,没有任何输出语句,但是DOS运行后,有person run的输出。没有调用什么东西,怎么就执行了?
person run的打印代表着构造函数执行过。那为什么构造函数能够执行到。
创建对象的类中,创建的是一个对象,换句换说,new Person()就是在创建一个对象,一个事物中的实体,它是属于Person类类型。
注意:同样是对变量进行赋值,赋值数据的来源有三种,常量,表达式,对象。常量和表达式可以认为是一类的,它们都是位于栈中,而且是直接将具体的数据进行赋值。而对象则属于另一类,赋值机制完全不同,甚至可以认为不是赋值。对象位于堆内存中,赋予的只是地址编号,具体的数据还需要局部变量自己来到堆中的对应位置来搜寻。
我们观察创建对象类中的执行语句,Person p=new person(),(这里有个疑问,为什么对象后后面要带上括号?这种形式是一直都有的,是为了运算数据而保留的。那么对象存在的目的又是什么?将事物实例化),变量名是什么,属于什么类型。new一个对象,后接Person代表着新建一个什么对象,Person类中的一个具体的Person对象。new后面的部分和构造函数的开头非常像。(不是像,如果是对应的对象和构造函数,两者应该是一致的,只是对象的括号中是具体数据,而构造函数中是参数列表。)
其实,在new对象的时候,它就在调用构造函数。这里有产生一个问题,new明明是新建,为什么会有这样的内容。如果不用术语来说,就是new一个Person对象,就是在执行,构造函数里的System.out.println("person run")语句。
专业的解释一下,构造函数在对象一创建的时候,就开始运行了。这样构造函数的作用就出来了,它可以给对象进行初始化。对象一创建出来,就具备一些内容,不需要调用,就有的一些内容。
构造函数就是在构建对象时,用到的函数。