00:00
好了,那么接下来咱们今天上午,呃,今不是今天下午,今天下午我们要干什么呢?哎,今天下午啊,首先这块啊,第九章对象的创建和使用这块,还有一个叫构造方法的东西,我们把它学习了,这个是非常非常重要的一个内容啊呃,级别呢是掌握级别,掌握级别啊然后呢,再往下呢,就是关于什么呀,关于这个封装了啊,我们看这个时间吧,来看先看这个构造方法,好各位啊,构造方法。叫做构造方法啊构造方法好了,那么接下来这个构造方法是个什么东西呢?哎,我们还是在这里啊呃,看一看好吧,建一个目录,呃,我们专门呢把代码放到这个目录当中好不好来我们叫构造什么呀?哎,方法啊构造方法,那么这块呢,咱们这样啊,点右键我们新建第一个。程序啊,我们就直接怎么写呢。嗯,我们就叫TEST01得了啊,也别起什么特别高端的名字了,是不是啊,构造方法是这个单词啊,Constructor constructor这个名字有点长是不是啊,Constructor test01啊来。
01:11
那么构造方法各位啊,构造方法那之前我们学的方法了是吧?哎,那么我们现在这个构造方法是干什么用的呢?是不是啊,构造方法是用来什么呀?创建对象的啊,创建对象的来构造方法首先在这儿先把架子搭出来啊,叫constructor。啊,TEST1,然后还是老规矩,STEM主方法,我们给它写上去啊。好,那么构造方法,首先第一个我们要说什么是构造方法。对吧。有什么用?
02:04
那么构造方法呀,它的作用是什么呢?就是用来创建对象的。执行构造方法就是为了创建对象。啊,然后呢,初始化成员变量啊,或者叫初始化实例变量啊,所以构造方法是干什么用的呢?构造方法啊啊,它也是一个什么呀,也是一个呃,比较什么特殊的方法。不能说也是啊,就构造方法是一个比较特殊的方法啊呃,这个通过这个构造方法可以完成什么呀?对象的创建啊,以及实例变量的初始化啊,实例变量的初始化啊,就说白了就是可以创建对象,并且给对象当中的属性赋值啊,就是这个啊,就是换句话说,换句话说,构造方法是用来干什么呀?哎,创建对象啊,并且同时给对象的属性怎么着啊,哎,赋值的。
03:08
这就是。构造方法啊,构建这个词大家应该听说过,构造嘛,对不对,造是创造,构是构建对吧,构造其实就是新建,新建啊,构造方法它是一个比较特殊的方法,通过构造方法可以完成对象的创建以及实例变量的初始化,那换句话说,构造方法是用来什么呀?创建对象,并且同时给对象的属性赋值的啊,赋值的。那么大家要注意啊,注意什么呢?注意一件事,就是我们之前给大家所说的啊,实例变量。实例变量啊,没有手动赋值的时候。啊,系统会附默认值。对不对,哎,系统会复默认值啊,实例变量没有手动赋值的时候,系统会复默认值,那其实在这儿呢,我们就可以在这写一个啊。
04:05
比如说我们随便给一个吧。给一个什么呢?我们就给一个student比较熟悉的学生呗,是不是啊,这是一个类。啊,然后接下来呢,我们在这写上public class,我们叫student是不是,那么这个学生有什么呀,比如说学号是不是,哎,他叫什么呀,比如姓名对不对,他叫什么呀,年龄啊,学号这块的话就是number呗,啊姓名这块的话那就是name呗,年龄这块那就是age呗,是不是哎。那么。什么是构造方法呢?我们之前好像在这个类题当中啊,也没有去干什么呀,定义任何构造方法。对吧,那我们这个对象是怎么创建出来的呢。我们的对象是怎么创建出来的呢?有没有感觉很诡异,是不是啊,那么就是说我们之前在这个类里面其实并没有写构造方法。
05:02
没没没有没有啊,这都是属性啊是吧,就是我们当前啊,当前的student这个类当中并没有什么呀,定义任何构造方法,就连方法你也看不见,没有方法啥也没有是不是啊,那这个这个对象是怎么创建出来的呢?大家还记不记得怎么创建呢?来,我们来创建一下对象,看能不能创建出来啊,来创建student类型的对象,那么student SE等于new一个什么呀?哎,Student new一个student各位啊,那么这个对象创建出来了没有啊,我们可以把对象我们可以输用啊,输出引用,我们可以把这个一的引用给他输出一下。System out print打印输出什么呀,SSE。那么接下来呢,我们来看一看啊,编译一下这个程序,并且运行一下,好吧,来我们CD,我们切换到构造方法里面看一看,我们有一个。
06:07
测试程序写本方法的还有一个普通的Java类student,在这student.java文件里面,其实我们并没有预写任何构造方法,大家其实刚才也看见了,什么也没有,是不是就一个属性,属性有一个学号,一个姓名,一个年龄是吧?这里根本就看不见构造方法。但我这里说了构造方法是用来干什么的呀,是用来创建对象的,对不对,哎,并且创建对象的时候还可以给对象的属性怎么着,哎赋值,这就是构造方法,但是我们之前在讲这个内容之前,我们好像一次呃都没有接触过这个构导方法对不对?哎也没写过,但是我们这个对象是怎么创建出来的呢?我们new,然后后面加一个哎类的名字,然后小括号是不是,哎然后呢,直接怎么着啊,哎在这里怎么着,哎创建出来之后把这对象的。什么东西啊,哎,叫做在堆里边的内存地址赋给谁呀?S1,哎,我们这个变量,这个S1变量,由于保存内存地址指向一个对象,所以S1被称为什么呀?引用我们把这个引用输出一下,我们看这个这个地方有没有值啊,有没有值,只要它不是就是只要只要输出结果不是none说明什么呀,说明这个对象怎么着,一定是创建完成了啊,一定是创建完成了,那我们来看看这个结果吧,这个结果大家可能目前看不懂啊,这个结果输出结果目前看不懂啊,此处的输出结果大家目前是看不懂的啊,后期再说啊,这里呢,我先给大家说一下这个事儿,提醒一下啊,别一会输出之后你看是吧,懵逼状态啊,Java c形式,Java编译,然后Java去运行,运行什么呀,运行我们这个叫constructor test,哎,我们叫做零一的程序。
07:44
好大家看到,总之啊,输出的不是一个none,输出不是none,它最后呢,输出这么一个东西,什么student,又来一个什么at符号是吧?哎,然后呢,后边来个54BE,什么DEF2对吧?哎,其实这就是输出一个对象。
08:01
它的一个结果啊,这个地址说的其实也不对啊,它也不能说完全它是个地址啊,不能说它是完全是个地址,就是说你现在看到的不是不是那对吧,这就说明这个对象怎么着啊,已经创建成功了,那么我们最主要的,哎呀,你看又说哈希值不用不用不用不用提啊,咱们后期再说啊,后期我会给大家讲明白啊,总之你看见这个不是none对吧?诶这个不是,这说明啥呀。不是,那着说明这个对象已经创建出来了,但是自始至终你根本就没有看见这里有啥方法呀,没看见有方法呀,哎,所以说这里啊,我要告诉大家一个消息,什么消息呢?哎,注意啊,重点当什么呢?当一个类啊,没有提供任何构造方法。系统会默认提供一个叫什么呀,无参数的构造方法。注意啊,这是个重点,各位,这个是你需要记忆的啊,需要记忆啊,当一个类没有提供任何构造方法,就是我现在的这个student,这个类并没有提供构造方法,但是它并不代表它没有,它是有的啊。
09:12
当前的这个类并没有定义任何的方法啊,但是系统实际上会自动给什么呀?哎,Student类提供一个什么无参数的构造方法啊,但是系统实际上会自动给student类提供一个无参数的构造方法啊。那么当一个类没有提供构造方法的时候啊,系统会默认提供一个无参数的构造方法啊,而这个构造方法被称为缺省构造器啊,而这个构造方法被称为什么呢?叫做缺省构造器啊,叫做缺省构造器好,那么这个呢,是呃,咱们一个比较重要的一个东西啊,你再看看是吧,你虽然没有构造方法,我们对象能不能创建啊,编译来我们运行一下你看。
10:03
是不是对象也创建了啊,这说明什么呢?你表面没有构造方法,但实际上是有的,只不过这个构造方法你看不见,而且这个构造方法是一个什么呀?无参数的构造方法啊,无参构造方法啊,了解一下这个东西啊,这个东西行了,那么我在这里呢,给大家呀说一下啊构造方法呀。怎么调用是采用new这个运算符来调用的啊,那么严格意义上来说呢,第18行各位啊,我在这里给大家说一下第18行代码后边的这个东西啊,严格意义上来说啊,这个其实并不是一个类的名字,这个实际上是一个构造方法的方法名,因为大家看到了啊,这个位置有一个什么呀,叫做小括号是不是。啊,有个小括号,大家是否还记得我曾经说过一句话,但凡是带括号的。一般都是方法对不对。是不是都说,诶之前我说没说过这个这个这个事儿。说过吧。哎,说过啊各位。
11:00
调用构造方法怎么调用呢?使用哪个运算符呢?哎,注意了啊,使用new运算符来调用构造方法。啊,构造方法。那么接下来我在这里先给大家提一下构造方法,构造方法的语法结构是什么?是这样的,各位啊,前边是什么呀?修饰符列表,后面是构造方法名,然后跟什么呀?形式参数列表,然后跟大括号,这叫什么呀?构造方法体,各位。啊,普通方法的语法结构还记得吗?就是普通方法的语法结构。是什么?还记得吗?什么修饰符列表,是不是还有返回值类型,还有一个叫方法名,这里跟什么呀,形式参数列表,然后大块里边跟个什么呀,叫做方法体是不是?哎,这是普通方法啊,这是普通方。
12:10
然后呢,我们这里啊,加上一个什么呀,叫修饰符列表,返回值类型,方法名形式参数列表和哎,我们大括号里边的是方法体,但是构造方法的语法结构啊,它是这样的,没有返回值类型各位啊,没有返回值类型各位不需要指定返回值类型也也不用写Y的不能写啊不能写。另外构造呃,修式符列表后边呢啊,就直接是构造方法的方法名,然后呢是形式参数列表啊以及什么呀,哎,构造方法体,构造方法体啊来。需要注意一下啊,注意一下第一个修饰符列表。啊,目前目前啊。统一写什么呢?Public啊,千万不要写什么呀,Public static啊,千万不要写这个,这是第一点啊,第一这是第一个注意事项,各位这个现在不解释啊,这个位置同一写public,然后紧接着构造方法名,第二啊构造方法名,构造方法名和类名必须一致。
13:20
和类名必须一致,各位啊,剩下就没了啊,当然第三是什么呢,构造。方法不需要指定返回值类型。各位啊,是不需要指定返回值类型,也不能写VO的,也不能写void。啊,你写上这个,写上VO的表示普通方法啊,写上的表示普通方法就不是构造方法了啊,这点呢,我要提先提醒一下啊,这个其实比我们普通方法更简单一些啊,更简单一些构造方法名就是什么呀,类名啊,类名就是构造方法,构造方法名和类名一致,构造方法名和类名必须一致,这个位置不能写public static得写public啊,然后这个位置是行参,这是构造方法的方法体。
14:16
啊,共同方方。那么通常在构造方法的方法体里边干什么呢?通常在构造方法体当中给谁呀?给属性赋值啊,给属性赋值完成属性的什么呀?初始化啊,完成属性的初始化,通常是在这儿完成属性初始化的啊,构造方法的语法结构再说一下啊,是这个结构没有反馈值,类型也不需要写Y的构造方法,方法名和类名保持一致啊,然后呢,形式参数列表,然后加构造方法方法体修饰列表,写public啊,不要写public static啊,这样记给点时间大家把这个记住啊,把这记住,把这格式记住,那么也就是说大家看这里是不是我们后边这是一个什么呀,实际上是个构造方法。
15:07
注意啊,你看我们调普通方法怎么调的,各位还记得吗?Public s slide void do some,我们要调这个do some方法怎么调,还记得吗?set.out点打印输出输出什么呀,输出就比如do some吧,简单点啊,Do some,哎,接下来我们要调这个方法,那很简单,我们调就行了是不是?哎,调就可以怎么调啊,就调用普通方法怎么调类名是不是类名对吧?然后点点点类名的点是吧,然后do some,嗯,这样如果说你这个方法和你下边这个方法在同一个类当中的话,我们说过类名点是可以省的,也就是直接来个do some行不行是没有任何问题,这是调用普通方法,那如果你要调用构造方法的话,那你就不能采用上面的这种方式了,构造方法你得采用运算符new来调用啊,怎么调用,我在这里说了调用构造方法怎么调用对吧?哎,使用new运算符来调用啊,语法格式是什么?语法格式是这样的,New空。
16:08
格加什么呀?构造方法名,括弧里边加什么呀?加实际参数列表啊,加实际参数列表,这就是实参实参对吧?那如果说括号里边一个参数都没有的话,我们这种构造方法叫什么呀?叫无参数构造方法啊,无参数构造方法,那么这个方法大家看我们new后边掉了这个构造方法,但是我们发现呢,我们的这个s student这个类里边并没有任何任何方法,对不对?哎,所以这块呢,我们得出一个什么结论,就是当前student类中没有定义任何构造方法,但是系统实际上会自动给这个student类提供一个无参数的构造方法。那到底是不是这样的呢?我们尝试一下啊,我们尝试一下我们现在这个程序编译一下并运行,各位啊,来没啥问题吗?来编译我们运行好大家看do some do some,下边输出一个student是吧?哎,Do some do some,然后呢,这块输出,那现在呢,我们new这个student这块怎么着呢?我们尝试着在这写一下啊,我们将什么呀,将无参数的构造方法,这叫什么缺省构造器是不是?哎,缺省构造器定义定义出来或者是写出来行不行呢?你比如说我们写public构造方法的方法名和类名一致。
17:28
是不是,哎,然后接下来我们在这呢,哎,加个小括号,然后加一个大括号,接下来我们在这system.out system.out.print打印输出我们叫什么叫无参数的构造方法执行了,那么这个时候呢,我们看这句话会不会输出,好吧,那么为了测试这个各位啊,我们在这个do some前边干什么,我们调用啊,我们来调用。无参数谁的呀?Student类无参数构造方法那怎么调呢?哎new,哎,构造方法的方法名啊,这是那个方法名啊。
18:05
方法名叫student对吧,对应的谁呀?哎,对应的其实就是我们这个呗。是不是这是构造方的方法名啊,这个位置千万不能写VO啊,写VO表示普通方法了,这是一个构造方法啊,然后呢,接下来呢,我们在这儿的new了之后呢,就相当于是调这个方法呗,那调这个方法,这个方法这块是不是就应该会输出啊,好,我们来看输出之后输输出一个do sum,再输出个do sum在这个等号右边是不是又次又一次掉了构造方法,所以这个时候我们在这是不是又会输出啊,所以会输出两次,是不是来加va c编译加运行。好,大家看无参数的构造方法执行了对不对,然后再往下do some do some,无参数构造方法执行了,那么实际上这个程序现在创建了几个对象啊,由于你这个new了几次啊两次。明白吗?你在这扭了一次,在这个位置你又扭了一次,所以是创建了两个student对象啊,Student对象只不过这个对象啊,你创建完之后啊,并没有付给某一个变量,对没有付给引用,就你这个对象是一个垃圾啊,执行结束执执行的过程当中,垃圾回收器会把这个对象给它回收掉啊,因为你没有引用去指向它呀。
19:09
对吧,你现在如果有这个引用啊,比如在前面加个student X,那这个X是个变量,保存内存地址指向一个对象呗,啊那这样的话,这个是不是就不会被垃圾回收回收了是不是?哎,但是这个对象会创建出来啊,会创建成这样一个对象,哎,这个是创建完对象之后把这个对象呢?哎,内存地址输给谁啊。哎,付给咱们的这个S1啊,付给咱们的S1这样一个引用啊。好了,那这个呢,其实就是我们所说的一个构造方法啊,当然这边的语法呀,还是挺多的,我们还没有说完啊,只是说了一部分,首先第一点大家要注意一个类,如果不提供任何构造方法的,它有无参构造。啊,那咱们做一个测试,各位啊,如果说现在我把这个构造方法注释掉,那你说我现在这个程序还能不能执行啊。
20:00
没问题吧?这个沟通方是吧。你不用写,是不是也有。对吧,哎,编译,然后运行,你看do some do some是不是输出程序编译和运行都没有问题啊,没有问题,那如果说现在我在我的程序当中。哪个程序,这个程序当中啊,我定义一个什么呢?定义一个有参数的构造方法。行吧,有参数的构造方法大家看啊,我随便写啊,我随便写,我写个in I,好,各位是不是就相当于这个构造方法是带一个int类型的参数啊。对吧,诶,那大家看看啊,我们这次就改了这一个地方,我们来编译一下,看看能不能通过行吧编译。好了,报错了,各位啊,第42行报错,第49行报错。对吧,42和49,我们定位一下这个程序啊。来这块呢,有一个42行的代码,还有一个49行代码好像不行了,这是为什么呢。
21:07
嗯,那如果说我要是再把上边这个无参的构造方法再放开呢。那这个是不是就没问题了呢?诶,果然是没问题了,但如果说我这两个都注释掉,大家看我保存一下啊,然后再编译,诶你看没问题是吧,如果说我把这两个都放开,我再编译呀,它怎么着啊,也是怎么着啊,没有任何问题,但如果我把上面这个无参构造给它注释掉,只留一个有参数的构造方法的话。我再编译,我发现就不对劲了,就不对劲了,这就不行了,这是什么意思,我说一下啊,这个错误所表示的意思就是啥?就是我们后边这个构造方法不存在,这个构造方法不存在,你用你用运算符调不了这个这个不存在了,这个测试的说明一个什么问题呢?说明在Java语言当中啊,如果一个类没有提供无参,没有提供任何构造方法,它会有一个无参构造,但如果你提供了一个任意一个构造方法的话,无参构造就系统就不再提供了。
22:16
系统就不再提供了,各位啊,这个结论呢,也是比较重要的一个结论啊,就是什么呢?就是第一点,当一个类中没有提供任何构造方法。系统默认提供一个无参数的什么构造方法啊,这个无参数的构造方法叫做什么叫做缺省构造器啊,缺省构造器。啊,然后呢,下一个知识点是什么呢?就是当一个类中提供,就是手动的提供了构呃构造方法,那么系统将不再提供无参数构造方法。
23:08
啊,这一点我们已经测出来了,各位。构造方法会默认创建一个无参,构造方法会默认创建一个无参构造,但是如果有一个构造系,构造系统就不会再提供方法了啊对,就是这个意思啊,就大概说是这个意思,就是什么呢?就是说哎,你记住这件事啊,经过我的测试测出得出结论,如果这个类里啥也不写,那有没有无炭构造啊。有吧,如果你写一个构造方法,还有无碳构造吗?就没了对吧,哎。嗯嗯,对,就是这个意思啊,就这意思。你看这个位置调的无参构造啊,这是构造方法的方法名啊,从此以后你也可以说它是类名,也可以说它是构造方法的方法名,这个是构造方法的方法名,这是那个参数嘛,对吧?调用构造方法你也不能用点的方式去调,对吧?你这些普通方法都可以用点的方式去调方法,但是我们这个构造法就只能使用new运算符来调。
24:08
啊,是用new运算符来调。明白吧,使用new运算符来调这个构造方法,构造方法的调用都是使用new运算符来调的。那调各方的目的是什么呀?是为了创建对象。是为了创建对象,各位啊,为了创建对象。嗯,你看第一个有参数过的方案,你看无参过导数就没了,你看再编译,你看报错了呀,编译一下你看报错了,是不是你看错了。为啥?因为这个方法不存在呀,这个方法不存在了,为什么不存在,因为你手动写了一个,它就没有这个方法,除非你把这放开嘛,我说你把这放开就可以了。你放开可以放开的话,你这两个同时都存在对吧,方法名一样,参数列表不同,这还是方法重载对不对,这在同一个类里边是不是方法名是不是相同,参数列表是不是不同,这是不是叫方法重载啊,所以这块呢,咱们你看再编译你看就没问题了,你看。是不是这俩方法可以同时存在,那这样的话,你的程序这块是不是你new调这个构造方法对吧?哎,你拗调的是什么呀?哎,还是这个构造方法,那如果说我现在在这儿能不能这样做,要student s3等于new一个student括号里边我传一个东西行吗?各位就原先在这块看student有一个无参,有一个有参数的构造方法,那这个是int类型,那我能不能在这传个100呢?
25:24
可以吗?我传个100行吗?来,我再把这个S3输出一下,接下来我们再来编译一下,大家看编译之后我们去运行。对吧,运行一下,然后我们下。走。好,大家看这个是不是也输出了。是吧,这个也输出了呀,这证明这个对象也创建出来了呀。是不是,哎,这是调另外一个构造方法啊,这个调这是调用另一个有参数的构造方法啊,调一个有参数构的话,上面这个调的是没有参数的构导方法。
26:03
没有参数的过法,你调无参的,调无参的这两个走的都是哪个方法呀?哎,都是我们的这个方法,那如果说你调的是下边这个news student的时候,传了个100进去,那你调的就是这个构造方法,那么这一块呢,我要说一下啊。说什么呢?无参数构造方法和有参数的构造方法都可以调用啊,没有任何问题,Student X等于new一个student,调用无参的是不是?哎,那么student y呢,等于new一个student,我可以调你有参数的构造方法是不是?哎,构造方法。那么现在我再问大家一个问题,构造方法构造方法可以重载吗?构造方法支持方法重载吗?支持方法重载吗?答案是什么可以啊?或者构造方法是支持什么呀?方法重载的在一个类当中,构造方法可以有多个,并且所有的构造方法名字都是一样的。
27:14
都是一样的,都是一样的啊,方法重载的特点是什么?方法重载特点是什么呀?在同一个类中方法名相同,参数列表怎么着啊,不同是不是你构造方法就满足了这个特点,想想是不是在同一个类里边方法名是不是一样,都一样,因为构造方法的方法名只能是类名,只能是类名,不能是别的名字。不能是别的名字啊,参数列表不同对吧,哎,都已经达到了,所以构造方法默认它就是什么呀,来支持什么呀,重载的,你看这个和这个重载是不是啊,那有的同学老师我来吧,随便写一个他一个是吧。然后方法名我就随便写一个啊呃叫呃叫什么呢,Student把了。
28:03
这个编译能不能过各位。这个编译能不能过?不行吧?编译器能让过吗,这个。不能吧,编译器看到这个方法这个位置是不是没有返回值类型啊。对吧,没有反馈类型编译器会认为它是个什么方法。编译器会判定它是个什么方法,是不是没有返回类型,编译器会没有,你看没有返回值类型,编译器会判定该方法是构造方法,于是编译器会检测方法名是否和类名一致,结果发现什么呀,不一致。编译器报错,因为你这个方法名你是个构造方法,你这个名字就必须得和我的类名一致啊,但你少了个T啊,所以说你看编译。
29:08
对吧?方法声明无效,需要返回类型,编译器在这并没有说你这个方法名写错了,对吧?编译器说啥呀?说你这个方法定义的没有任何效果,是无效的,需要返回类型,为什么?因为编译器认为你是个普通方法。编译器认为你是个普通方法。是不是啊,其实编译器并没有认为它是个构造方法,编译器认为它是个普通方法,因为编译器检测的这个名字呀,和这个类名怎么着不一致,和类名不一致,编译器它会认为什么呀,它是个普通方法,而普通方法这块呢,你又少一个什么呀,少一个返回类型,所以这个时候呢,它会提醒你怎么着啊,哎,会提醒你,你看他怎么提醒的,他说需要返回类型,这个位置需要返回类型。是吧,哎,所以说编译器啊,还是比较智能的啊,还是比较智能的,对没有反馈类型,编译器会判定该方法是构造方法,这段话我觉得可以省掉,不这么写啊,他有另外一个说法,什么说法呀。
30:08
编译器检测到什么呀?该方法名叫student是吧?哎,发现什么呀,这个名字和类名怎么着啊,不一致。啊,编译器怎么着啊,编译器会认为该方法是一个普通方法。是不是啊,普通方法应该有返回值。应该有返回值。但是没有,没有写反馈值。类型是吧,所以报错了啊,这个错误信息呢,是什么呢?哎,这个信息方法声明无效。是不是哎,需要返回类型,需要返回类型。那如果说你要想让这个通过的话,那你就这样写呗,对吧,或者你前面加一个什么呀,反回式类型,你说VO叫student是不是啊,Name这是第一种修改方案啊,第一种修改方式就是这样做,对吧,你前面加个东西,那这样他那没得说呀,那是个普通方法呀,有啥可说的,是不是编译器就通过了,那要么呢,你第二种修改方式是怎么做呀?哎,第二种修改方式是怎么做哎。
31:26
第二种修改方式,无非可能就是说我们在后面加个T呗,是不是,哎就直接加个T,把前面去掉,这个不要了,后面加写对了对不对,Student对吧?哎,那么这是我们的第二种方式啊,第二种方式都行,你看你你你这块有没有对构造方法有一定的认识啊,我再强调一下啊,构造方法,构造方法是用来创建对象的。啊,并且在创建对象的过程当中,初始化实例变量,也就是把这些变量的内存给它开辟出来。把这些变量的内存给他开出来,这就是构造方法的作用,各位啊。
我来说两句