00:00
好,那么接下来的话呢,我们来看一下这个第七章了啊,叫面向对象编成这个进阶篇,呃,咱们呢,这三章呢,是讲面向对象的,呃,其实里边这个细节呢比较多,其实我们讲的呢也还算是比较细,整体来看的话呢,面向对象里边呢,差不多都是重点啊。极少的内容呢,属于非重点的,或者大家了解一下的啊,因为呢,整个呢,这个语言层面的这些规定呢和规范呢,如果大家不熟悉,会直接影响到后续你写代码啊,包括一些关键字,你说我都不熟啊,那看源码或者我们自己写程序当中出现了这样的关键字呢,你就不知道它是什么作用了,所以这块呢,大家肯定是要花很多的心思呢去学习的啊,那么第七章呢,对应的这个课件呢,就在我们这个文件里了,诶首先的话呢,我们先看一看这一章,我们主要呢讲几个问题啊。呃,咱们前面呢也提到过了,整个面向对象呢,学习是有三条主线的,那这儿呢,我们同样的是从这三条主线出发啊,继续的往前去推进啊。首先的话呢,一上来我们讲一个关键字,这个关键字呢叫做Z。啊,这个这次关键字呢,其实不是特别难啊,我们从实际的需求出发呢,说必须要引入这个关键字了啊,其实这块呢,大家就非常容易呢去理解它,从实际上大家使用情况来看呢,呃,这个呢使用的其实都挺好的啊,然后下边这个呢叫呃一个项目,哎,我们在每一个阶段呢,都设置了一个项目,在我们第二阶段呢,叫拼电商客户管理系统。
01:18
啊,其实这块呢,主要我们来练的呢,就是对象数组的一个增删改查啊相关的这种操作了。好,那么在接下来的话呢,我们谈一谈啊,面向对象的第二个特性啊,叫做继承性。哎,这就我们讲的算是第二个知识点了哈,然后呢,再往下的话呢,我们讲一个关键字啊,这个关键字呢,叫做super,看清楚super不是supper哈。不是晚饭哈,呃,Super超级的啊,诶这个呢,是基于我们讲的这个继承性之后哈,说呢,我们子类跟父类呢,在调用的时候,子类呢如何调父类的结构,这个呢叫super了,然后包括呢子类对象实例化的全过程,那这个我们都可以理解成呢,诶在super这块呢去体现的。啊,这是我们这个知识点,好,然后再下边呢,我们提到面向对象的,呃,第三个特征叫做多态性。
02:03
那么封装继承多肽呢,我们就相当于可以收尾了,那这三个特征里边呢,最难的其实是多态性啊,这个是比较难一点的哈,包括呢,这个多态性呢,也可以呢,看作是我们继承性的一个延续。啊,也就是说呢,没有继承性,其实呢,也就没有多态性啊OK啊,那这个多态性这块呢,一直是下边这好几个知识点啊这呢都是讲这个多态性的,然后在最后的话呢,我们提到一个类,这个类呢叫做object这个类。那这个类的话呢,实际上呢,是我们整个啊,Java这个类的继承啊,这个关系数当中呢,最顶级的一个类叫做object这个类,那那这个类里边呢,我们主要呢,就谈它里边的两个常用的方法,一个呢叫equals,一个呢叫to string。哎,这呢,就是整个我们这一章的内容啊啊,那其实呢,我们从这个继承性往下啊出发。下边这个呢,叫super的使用,下边呢叫多态性的使用,在下边儿呢,叫object这个类的一个介绍,实际上呢,下边这几个内容啊,都可以看到,是由我们这个继承性的出发引出的相关的一些内容。
03:02
啊,从这个角度来讲呢,这个继承性的东西啊,其实是比较多的,但是呢,通常大家关于继承性的掌握呢,都是比较好的。啊,不太难理解啊,反而呢,这个多态性呢,它的格式呢是最简洁的,呃,也正因为它的格式比较简洁,所以大家呢,呃,对于多态性的理解呢,可能会偏差一些啊,所以这块你知道这个重点啊在哪啊,难点在哪儿?好,那这块呢,我们就从这个关键字的角度出发,来开始我们这章的一个学习。啊,直接呢,就回到我们这个课件这个层面了啊,就在这儿了啊,诶首先呢,这里边就需要我们这个this关键字它的一个理解了,是吧?诶它的理解呢,不是特别难,跟它的词义呢,是比较接近的啊,那这个Z啊,咱们上学的时候呢,学英语应该是比较早的就接触到这个Z了啊。啊说。就是this is什么什么,That is什么什么是吧。啊,这个典型的这个中式的这个英语载特意思是吧,啊这个呃,这次的话呢,其实啊,说这是一个什么,这个呢啊,它其实体现的呢,其实就是一个具体的一个东西了,是吧。
04:03
那所以在我们这里边儿这个this呢,其实它表示的也是一个具体的一个东西,那这个东西是什么呢?咱们换算成这个编程,这里边儿这个词汇呢,其实就是表示的是对象了。啊表示的就是对象啊,那我们为什么在这个程序当中要使用这个这关键字呢?诶直接呢,咱们就来看一看咱们对应的这个代码这块了,好这块打开啊,直接我们看一看关于它的使用啊说呢到目前为止,咱们写这个程序的时候呢,说呢也没有说非得要用this次啊现在呢,我营造一种场景,这种场景呢,我们发现这次呢是离不了的了。呃,什么场景呢,哎,这呢,就是我们说可能出现的问题啊,哎,大家你看一下,我先把这个问题呢描述一下啊现呢,呃我们啊,比如说在啊声明一个方法时。比如或者叫声明,呃,一个属性对应的叫set,方法是。哎,猜猜叉叉是吧,哎,这个哎方法是。这个咱们都知道啊,我们通过。哎,通过这个行参。
05:02
啊给,然后呢,我们这个属性啊,或者叫对应的这个属性呢,去赋值啊,那么如果我们说这个行参名。啊,和我们这个属性名同名了。啊,那么该如何在方法内区分这两个变量呢?哎,那么该是吧。哎哎哎,如何在啊。这个方法内啊区分。啊,这两个变量呢。是吧,诶这呢,就是我们引出的这样一个问题,那由这个问题出发呢,我们说这个对应的这个解决方案是吧。哎,这呢,我们就提到了,哎,得使用这个Z。啊,那就相当于呢,使用这次修饰的这个变量呢,表示的就是属性啊,那你没用这次修饰的呢,表示的就是你的刑残。哎,再这说一下啊,使用这次啊,然后呢,哎,这个具体来讲啊。
06:01
啊,使用this来修饰的。这个变量呢,啊,就是表示的是这个属性。啊,没有用啊,这是。修饰的。哎,表示的是青菜。诶,其实这个呢,就是说到了我们最常用的这次的这种场景啊好,下边呢,咱们来去举这个例子了,诶这块我们就写个这个具体的程序了啊,诶不妨呢,我们就还写成这个叫person了,关于它的一个具体的测试啊下边这块我们就声明一个,诶class,哎,这个我们叫个person。啊,这就可以了啊行这块呢,我们就直接再去声明具体的这个属性了啊哎,比如说啊,这块我是词针形的name啊,In形的age啊,我就写这样的两个属性啊下边呢,我们就写一个,比如叫set一个age。啊,这呢,我就int型的一个A,你看原来我们在声明的时候呢,我刻意的把这个行参名和我们这个属性名啊,我给它避开了,诶我们这条A值呢,拿这个A呢,去做了一个赋值。
07:02
哎,那在我们这个测试这个位置呢,哎,咱们首先呢,创建一个对象。创建好以后呢,我们通过这P呢,咱们叫set age,这呢我写了个十啊,接着的话呢,我们通过P呢,咱们去这个呢,我们没有get的方法了,直接呢去点一下这age啊,这样的话呢,我们就获取到了这个属性的这个对象的这个属性值了,显然呢,这个就是十。行这块呢,大家应该没有任何异议了啊好,那么我们来看一下这个行参啊,前面呢,我们讲过说呢,定义变量的时候呢,这个变量名其实是个标识符了啊,定义标识符呢,我们要求呢叫建明之意哈,那你这里边的A呢,显然呢,是不是跟我们的age呢,感觉差点意思。你也没有见明之意啊啊这A这太抽象了,哎,所以呢,这块呢,我们就说鼓励大家啊,你把这个形态名写成跟我们这个属性名一样,这样一看就知道是给它初始化的。包括我们在构造器中也是一样啊,你像们这个person的话呢,这个叫呃,这个这个string型的一个name了,它可能还有呢,String型的,比如说一个叫email。啊,就这样是吧,哎,都是磁针类型的,你说我这块呢,我写构造器啊。
08:03
哈克,咱们先整一个这个空餐的啊,哎,我接着呢,再整个这个代餐的。哎,代三这里边呢,我写个死令形态,这个叫N,哎,我再写个死针形的叫E,你说这块呢,是不是得太抽象了。都是词缀类型的是吧,你咋说你这个N呢,就是name e呢,就是email呢。是吧,那这个呢,就我们就觉得稍微的有点这个,哎,不是特别的好理解了啊。啊,Email这块这样一其实呢是想这样复制,但是你这光看这个名呢,就有点太抽象了,诶那我们在呃实际呢,声明这个属性的时候呢,呃,声明这个形态的时候呢,我们可能给它就叫成交。配置了。哎,表明呢,我们这个名就是给你这个属性同名的,这个属性呢去复制的,那你进而啊,你下边这块呢,不也得改成叫A制。但是这样一改的话呢,这个事儿就麻烦了啊。哎,你看我改完之后呢,这块就出现了这个属性叫age形态,也叫age里边呢,Age复制为A。这就麻烦了,这到底变成谁了?啊,这时候呢,其实有一个就近原则啊,啊这时候呢,我们这个A的话呢,就全是我们这个叫行参了。
09:04
哎,相当于你把形态又付给邢单,说白了,这里边儿根本就没有属性的事儿。进而我们再要去测试的话。哎,对,这是你发现的值,属性根本就没有负上值。呃,这呢,就背离了我们这个赛的方法的一个初衷了。啊,那怎么办呢?哎,这个呢,其实非常简单,哎,我们只需要呢,在呃,你想表达为属性的这样的一个变量前面呢,加上一个这次点。就可以了。啊,然后这时的话呢,你看这个age呢,它变成了跟我们属性那个颜色一样,我呢按住CTRL键一点就点到这来了,然后后边这个呢,你看我一点就点到这来了,那说白了就是你后边这个呢,仍然是行参,前面那个呢就是属性。哎,那么进而呢,我们再去做这个调用的话呢,是不是就又附上值了吗。哎,你看这个呢,就没有问题。哎,这呢,就是我们说呢,在这种场景下呢,这个Z呢,属于叫必须要用的。不用不行。哎,这呢,就是为了区分我们的这个属性和这个行参。
10:01
那这个呢,写完之后呢,对应的我比如写个这个get方法啊,Int类型叫get一个age里边呢,我们就直接return age了。哎,那么这个A的话呢,呃,因为我们这也没有所谓的行参了,所以它呢就是指的属性了。那你说我们这个位置前面我加个Z4点行吗。诶,完全没有问题。只不过呢,这时候呢,你这个C点呢,就是可加可不加了是吧。哎,那这个呢,是一定要加的,那么这时候呢,这个这次我们该怎么去理解它呢。对,我们把它理解成是不是当前,哎,你这个属性所属的这个对象。哎,那在我们这个问题当中啊,诶,我是拿P1调的set age,那其实相当于呢,我们这个P1是不是就充当的是这个Z。哎,所以就是这个P这个对象的A啊,但是你注意啊,这个位置你不能写成P吧。为什么?对啊,这个就涉及到到底谁先谁后的问题了,你是不是先创建好类,然后才去创建对象了是吧?哎,那你这个对象名叫什么我也不知道啊,或者换句话说呢,就即使知道了,那我我还可以再去造个对象,我叫P2 p2在3A,你总不能改P1吧。
11:12
所以这个位置我们需要呢,是不是动态的表示哪一个对象是吧?哎,那这个所谓的动态呢,就是用的this来表示的,这个this呢,就做当前对象,哪个当前对象谁调这个方法。这个对象就是谁?你是P掉的S内,那这就是P。要P2的,那就是P2。哎,所以呢,它理解为叫当前对象啊。好,这个要清楚了,那我们再看这啊。这个叫构造器,咱们由刚才这个经验来说,这呢是不是也想叫内。这个呢,就叫做email。这个写完以后的话呢,自然而然啊,下边这块呢,我们就也得做这个替换了。哎,显然呢,也会有同样的问题,所以呢,我们需要呢,前面啊,这两个仍然表示的是这个成变量啊,所以我们是不是就得加个C点了。哎,这个那就可以了。
12:00
哎,但是但是呢,这是一个构造器了啊,咱们说这个方法的话呢,是对象点,所以这个就是当前对象了,那你这块呢,是谁点啊。也没点啊是吧,哎,我们是不是new的方式呢,使用的是吧?哎,Person一个PR,哎,New一个person啊这呢,我们比如叫Tom啊,这个邮箱啊Tom。啊,这个a126.com。前边这个呢,是他的名字啊,后边这个是他这个邮箱哈,这个我们升级完以后的话呢,其实也能够给我们这个属性的附上值呢。哎,那么这时候这个啊,咱们理解成了叫当前正在创建的对象。哎,其实呢,在我们这个问题当中,就是你执行完以后的这个P2了。哎,那既然呢,给我们这个P2的属性附上值了,哎,你再接着去打印的时候呢,也就有这个值了。哎,咱们拿这个AP2点,哎,直接呢,咱就掉这个属性了啊。逗号。Email。哎,加上p2.1谬,诶这样就行来跑一下啊。
13:01
那你看这种我们就搞定了啊,哎,说明呢,我们这个理解呢,都是没有问题的。呃,其实呢,我们加上这次的话呢,我觉得比以前我们不加呢,反而更好去理解了,像以前我们说呢,说方法里边可以调属性。其实现在我们明确的话呢,是能掉属性掉的是谁的属性啊。哎,就是你谁调这个方法,我这个属性就是谁的是吧?诶其实呢,就更加的明确化了啊,这个呢,就是咱们这次使用的诶非常重要的一个场景,除此之外还有其他的啊,咱们一点点来啊。好这块呢,我们首先呢,来做一个说明啊,就引到这儿了啊说这次呢,它可以调动结构,哎,刚才我们也看到了,可以调用叫成员变量。诶,能调局部变量吗?诶注意啊,这个位置呢,我们不能简单说呢,说它只能调它,它能调变量,其实只能调成远变量。局部变量不行,你想局变量要一掉,咱们不就说你立马就变成是。你看比如说这个呢,你以为是他一加这是立马就理解成是属性了。
14:03
诶,所以说我们调的呢,只能是叫成现变量啊,成现变量一个啊,再一个呢,就是这次呢,还可以去调方法。诶方法什么意思。你看public eat方法。是吧,然后呢。啊,具体呢,有这个线的方法体,咱们简单写啊,说这个人吃饭是吧。哎,这呢,打印一下啊,说这个人睡觉啊。好,然后呢,这个方法里边呢,我们说呢,是可以调方法的,以前呢,咱们不就直接这样写的吗。哎,其实呢,我们说呢,这个sleep前面啊。哎,这个这点呢,是不是可以加上是吧。诶加上这个没问题,说白了就是说,诶你谁调这个eat方法那个对象呢,诶就拿着那个对象呢,再去调这个sleep。啊,只不过呢,像以前的时候呢,像这个的位置的C点和这个位置的C点,咱们都给省略不写了,不写意味着不意味着没有,其实都有啊呃,只是呢,我们省略了而已。
15:01
OK啊,所以呢,我们呃,能够调成员变量,哎,能够调方法,其实呢,还可以用来调用这个构造器。哎,调用过道器的事儿,咱们一会儿呢,重点来说啊好,那下边呢,关于这个这次的一个理解的话呢,就像我们刚才调成现变量调了一个方法,哎,我们就理解为呢,就是呃,叫当前对象。啊,当前对象啊,那其实呢,或者呢,我们理解为呢,叫当前正在创建的对象。啊,前者的话呢,咱们啊理解成了就是在方法中调用时是吧。呃,理解为呢叫当前对象了,诶然后这个呢,我们理解为呢在呃构造器中。在调用时。哎,你像我们刚才呢,不是在这块,诶用对象的时候呢,这个这呢,咱们理解成就是当前正在创建的对象。啊,就这样个场景啊,好回过来啊,那刚才提到了说我们这个这次呢,可以调用这样的几个结构,哎,那我们把它呢分一分类哈,哎就是前面这两个呢,咱们可以合在一起呢去说,然后构造器这个事呢,单独的去说,哎分成两个内容呢,来去讲解。
16:05
那首先咱们就看第一个。啊,其实刚才咱们已经讲过了啊,当然这块我们再具体描述一下,说这个这次呢,可以来调属性,可以来调方法,诶那么我们又分成了你在方法里边调的,还是在构造系中调的,哎,方法里边调呢,刚才说了就是叫理解为叫当建对象,构造器里边呢叫当前正在创建的对象。好,那么下边我们具体来看一看啊,所以呢,我们在方法中使用,这次的话呢,可以干这个事儿啊,怎么去理解。啊,那这块我也加了一句话啊,呃,这个咱们,呃,目前呢,涉及到的方法呢,都是非代立的。啊,在这个呢,典型的目前谁呢,就是may是吧。那现在咱们先不管它啊,后边讲了static之后呢,我们再谈到关于Z的,呃,调用的时候呢,他们的一些这个这个点啊,现在的话我们全是这个非static这个方法。这块我们看怎么说啊,嗯,这个一般的情况。诶是怎么着的啊,我们说呢,是这样的说呢,我们这个通过对象。
17:05
啊,通过对象呢,来调用方法是吧,所以呢,可以在方法内啊使用啊这个。呃,会在方法内啊,就要调用啊当前。哎,调用这个当前对象的这个属性或哎其他方法。这个是没问题的是吧,呃,那么此时呢,哎,我们可以在啊这个属性和。哎方法哎和这个哎叫其他哎方法前使用。哎,使用。哎,使用这个啊,叫这点啊是吧,哎表示呢,当前。哎,属性啊或这个方法呢,呃,所属的这个对象。这个是没问题的啊,哎,但是呢,呃,一般情况下。
18:00
那情况下,哎,我们都选择省略词,哎这四点结构。哎,这个大家去体会一下啊呃,为了好描述呢,我这块我写个A吧,所以呢,我们通过对象A呢去调用这个方法,那可以在方法内呢,调用当前对象A的这个属性或者其他方法,哎,此时的话呢,我们可以呢在这个属性和其他方法前面加上C条,表示呢你当前属性或方法所属的这个对象A了,但是一般情况下我们都省略了。啊,这是咱们前面强场景啊,哎,那么这呢,我们提到这个,诶特殊的这个情况啊。在什么情况下我们不能省略呢?哎,我们这里边提到啊,说如果哎这个方法的这个行参。啊与啊这个对象的这个属性呢同名了。所以呢,我们,哎必须呢,呃,这个使用。嗯,这是点儿。哎,同名了啊,诶我们呢,必须使用C点呢来进行区分。啊,那么使用这次点的。
19:01
哎,这一点啊,修饰的这个变量。啊,即为哎变量,即为我们的这个叫哎属性或者叫成变量啊。啊,那么逗号一下啊,说没有使用啊,这这四点修饰的这个变量。哎,我们说呢,极为啊叫做,呃,这个叫局部变量是吧。OK啊好,那么此时的这个C点呢,咱们是不能够去省略的。哎,其实刚才我们举的这个例子呢,不都是这样子的吗。呃,这个位置啊,典型的我们这块呢,说到的其实就这个位置啊,然后这个位置呢,就我们说的没有这个局部变量了啊,所以这个C点,然后这个C点诶,我们就都是可以省略的这个场景。好,这呢就描述了一下啊,针对方法内的情况,那针对构造器呢,其实跟它差不太多哈,只不过呢,这是我们就不叫当前对象了啊,理解成了是当前正在创建的对象是吧。哎,这块我我这么着啊,要不大家看这个结构不太好区分了,哎,这样加一个框啊。
20:04
哎,这么着啊。这个呢,我们就往上提一下。啊,这个呢是一部分啊好这呢,我们就直接呢把它再粘过来,我们再去体会一下啊,所以呢,在构造器当中使用这次这个场景说,一般情况下呢,呃,我们通过构造器创建对象时啊。这个我们这样写吧。一般情况,我们通过。构造器创建。啊,对象时是吧,可以呢,在构造器内。诶,可以在构造期内啊,然后调用当前正在创建的。哎,正在。哎,创建的,哎对象的这个属性啊,或者是哎方法。那就不用其他了啊,那此时呢,我们可以在这个属性和方法前。哎,这个使用C4点表示呢,当前属性或方法呢,呃,所属的对象啊,这个A呢就也去了,哎,当然一般情况下我们把这个C呢就给省略掉了。
21:07
这一下啊,诶就给省略掉了,诶这个呢,回过来对应的就是这个意思啊,哎,我们在哪怕你说这个person这块也行啊在这个。或者我这块我再再写个也行啊。Person这个场景,这呢,我们就写个死针形的一个N是吧。哎,比如在这儿啊,像原来的时候呢,我们就来这样的去写的,包括呢,在这里边呢,你也可以呢,去调我们这个所谓的一的方法。啊,这些都没问题啊,哎,像这里边这个C4点,还有这个C点的,咱们就相当于都给省略掉了,这就是属于这个一般的这种情况啊好,下边特殊的情况说,如果呢,咱们构造器的型参。哎,它呢与呃,咱们这个,嗯,这个正在创建的对象的。啊,创建的对象的这个属性呢,同名了,那必须使用这点呢进行区分,使用它的修饰的变量呢,即为这个属性。
22:01
啊,那没有呢,使用它修饰的极为啊局部变量。啊,这块对应的就是我们下边这个场景。这个呢,主要就是理解上呢,它叫做正在创建的对象,这个理解为呢,就是已经创建好的这个对象,区别呢,其实就在这儿,具体的这个细节啊,其实都差不多啊。哎,这就可以了,好,那么这个事儿呢,咱们就告一段落了,哎后续呢,咱们再去定义这个相关的方法的时候呢,如果属性跟这个呃行三的重名了,这个我们用Z呢去做区分啊就OK了,这是它的一个主要场景,那么除此之外的话呢,这块还提到了我们这个Z呢,可以去来调用类的构造器啊,这个呢是我们没有接触过的,哎,我们来把这个知识点呢说一下啊。好,这个知识点描述的话呢,不妨我这边呢,再重新的去声明一组。在刚才这一组呢,我们就不用了啊,要不呢,放在一起来有点乱了。好,这一组呢,我们叫做U了,不妨呢,这里边我也声明啊,磁针形的这个name的属性啊,In特型的A属性。好,关于构造器这块呢,哎,我们去做这个Z的说明,所以呢,我先去提供几个构造器。
23:03
这呢,是一个构造器。再来。这呢叫四针形的,哎,这时候我们就可以放心的写成叫name了啊,这name等于name是吧。好,Public user啊,String the name in the age。哎,c.name等于name。哎,c.a值等于A值,诶这不就写好了啊好,现在呢,我们专门呢,是针对这个构造器呢来去说的。这个构造器里边呢,你会发现呢,我们目前写这代码上呢,其实比较小啊呃,那实际在开发当中呢,我们这个类呢,在创建对象的时候呢,完全有可能这里边呢,会有很多的代码呢,需要去编写啊,比如这块我们就模拟啊,哎,说这个对象创建时。哎,创建时啊需要呢,诶初始化,比如说50行代码。诶,我就举个例子啊,好,那你通过这个构造器造对象也好,通过它也好,通过它也好,大家都需要呢,提供这50行代码。那目前来看呢,我们是不是每个里边都得写。
24:03
都离不了是吧?哎,那你要都写的话呢,很显然呢,这块是不是显得有点冗余。那怎么办?啊,这块的话呢,可能有同学会想那也行,那我就这块我定一个方法,比如呢叫一个word叫in吧,然后呢,在这个方法里边呢,诶我把这五行50行代码呢给写上啊这个权限的话呢,我们不让外边调,我也写成private,然后在这个位置呢,我去调这个in的这个方法。可以吧?诶,可以的啊,没问题啊,诶但问题是什么呢?就是有可能是啥呢,就是你这块有属性啊,我上边写了20行,诶这块呢,又用了一下这个属性,下边又写了十行,哎,这个十行当中呢,又耦合着你这个内幕。就是它可能会跟这个代码就是有有有融合是吧,耦合了,所以这块你在处理的时候呢,有可能你得定义好几个方法啊。你就会显得有点复杂。啊,但至少呢,这是一种方案啊,这个是没问题的,那除了这种方案之外呢,我们说那还有没有其他的这种方式,呃,也有就是我们现在要讲的这种这调构造器的方式了。
25:05
哎,怎么讲呢,比如说我们就把这块呢,呃,需要呢,你写的这50行代码呢,我们就先放在这个user里了。放到这里以后呢,哎说既然你这里边也写,既然你这里边也写,哎我能不能说呢,让下边这两个构造器呢,直接或间接的呢,直接来调一下你。是吧,哎,那这时候呢,我们说呢是可以的啊,咱们就把这个去掉,诶我呢就是这样来去写了啊这次呢,一个小括号使用这样的一种格式呢,表达的就是你调的就是当前空餐的这个构造器。所以你看我这个点一下这个这次一点就点到这来了。哎,就表示的就是它,哎同学说那怎么不这样写呢。规则就不是这样写的是吧,哎,就是写Z这样的方式啊,注意啊,用它呢来表达的就是调的是这个构造器,那下边呢也同样的道理,诶我们呢就可以写成Z4,哎它哎它呢表示的掉的也是它。啊,没问题啊好,那你要再细看的话,你发现呢,这个构造器里边有一行代码,这里边儿也有了,说这个也冗余了。
26:05
你说我也不想写了啊,那你可以呢,这么着,我把这行代码呢,我也不要了。诶,我呢,在这个构造器里边,我就调你上面这个了。哎,那我这儿呢,怎么处理呢。哎,我把这个name呢,我就放进去了。诶,你看能不能看懂啊,如果我要是通过这个构造器呢,去造对象,首先呢叫Z次内幕啊,这个内幕呢是齿针型,所以呢,先去当前类里边找此针类型参数的这个构造器了,就找到这个了,所以这块呢,其实就表示来了啊。我把我这个行参传给你了,哎,这不就跑到这儿来了。哎,在这的时候呢,是不是也会把这个属性呢,做上一个赋值了。诶同时的话呢,你再调它的时候呢,它又调到上边了,是不是你要通过这个呢,去造对象这几行几十行代码,是不是照样也会执行啊。哎,对的啊,哎,所以呢,这就是我们当前这个使用这个这次这样的一个结构的方式,哎,先过来我们做一个说明啊。
27:00
好,这块。第一个点啊说呢,我们可以。哎,使用。哎,使用这样一种格式啊,这哎小括号这个呢叫哎行参列表。哎,这个列表的话,你可以是空的哈,啊,那就是这次空了,诶,我们可以使用这样的一种格式。啊。哎,怎么着呢,哎调用。当前。啊类中指定的啊构造器。哎,这呢,就是我们对应的这个格式啊。好,这呢是我们说的第一个哎操作啊,然后第二操作呢,我们说整个这种格式啊。嗯,它的这样的一个方式调呢,是哎,我这样说吧。嗯。我这样去处理一下,首先呢这块我就先写个这个叫格式吧。哎,先写个他啊。然后把这个呢,我放成第二个。啊这样说啊说呢,我们可以在嗯类的构造器中。
28:06
调用啊,当前雷中指定的构造器。哎,我这块我在想加个限定词,调用当前类中指定的其他构造器。啊,为什么非得强调是其他呢?就是你不能自已聊自己是吧,诶自己聊自己会怎么着了。诶,这不是跟我们前面讲的那个递归那样,是不是一样的道理了,诶你自己要自己这个呢,还没有所谓的这个终止的情况了,那这块就无限的会执行下去哈,所以说呢,我们在构造器当中啊,你不能自已到自己首先啊,所以这块我们明确的是调用其他的构造器。OK啊好,那么这里边儿呢,还有一个要求。哎,这个要求什么呢?就是我们在调用其他构造器的时候呢,使用是这个格式,这个语句呢,必须声明在当前构造器的首行。必须,呃,声明在啊,当前构造器的首行。
29:05
也就是说呢,你要是想用的话呢,你一上来就得把这个结构写上,你说呢,我就不想写这儿,我就想写到下边。写完之后呢,就报错了,报错的信息啊,说呢你调他了,说他呢,Must be。哎,必须是当前这个构造气体的first statement。啊,第一个语句。哎,说的非常明确啊,所以呢,你不能够写到这儿,要写呢只能写到这儿。哎,每一个都如此。就是你可以不写啊,但是你要写的话呢,你必须要写在首行。好,那既然呢,要求放在首行了。那我说呢,在一个构造器当中哈,最多呢,有一个这次行电力表的结构了。你不能写俩了,写俩,那你后边那个是不是就第二行了。哎,对的啊,诶,所以这块呢,自然而然,诶我们引出来一个算是一个结论了哈。哎,结论呢,就是哎这次哎形态列表这样的一个结构。
30:01
哎,我们说呢,在哎构造器中。啊,最多啊声明一个。哎,你不能声明多了。啊,这是这样一个场景啊,好,这个呢,大家相对来说还是比较好理解的啊,其实说白了就是你一上来指明你到底要不要掉本类中其他的这个构造器了。啊,你要掉你就先去掉。啊,你要不掉像我这样场景,那你就直接呢往下去执行。就可以了啊。好,那么这儿呢,我们写了三个构造器啊,三个构造器呢,目前的这种场景呢,是这样子的,哎,这是一个,这是一个啊这是一个,现在的话呢,我们是下边这个呢,会掉它它呢会掉它它呢谁也没掉。但如果呢,我们通过三个构造,其中呢,呃,任意的一个去造对象的时候啊,比如我通过他造对象,那直接呢就叫他了,哎,我想通过这个造对象。相当于一上来的话呢,得先去调一下它。哎,这个调完之后呢,你再调这个,哎,赵乐婷你要用这个呢。哎,先去调查它,它呢再调它,哎,这个执行完了,这一行执行完了,哎,再把这个执行一下,这个执行完了,这个呢,整个构造器执行完了,哎在呢执行一下这个。
31:07
注意啊,我要是通过这个构造器具造对象,你说我们又调这个了,又调这个了,这到底算造了几个对象呢?会不会有同学说这掉了三次,这不就三个对象吗?能这样理解吗?肯定不能是吧,这样理解的话,那不是麻烦了吗?那相当于你这样一行代码下去,你都不知道造了几个对象了。呃,U一个U1啊,New一个user啊,这个呢叫汤姆,这个呢叫12岁,问造了几个对象呢?说我也不知道是吧,诶我也不知道你里边这个C4咋调的,那不行啊是吧,诶这个一定要明确啊,诶不管呢,你在这个构造器里边,你直接间接的你调过几个重载的构造器。哎,我们这里边儿这个对象呢,就只有一个啊。哎,这要明确是啥啊,叫只创建了。啊类啊一个对象。
32:00
所以呢,你看这个构造器,当初我们在讲它的作用的时候呢,其实我这块写的时候呢,还是非常注意这个问题的。你看我这里边我怎么写的,作用一。哎,我说搭配new关键字创建类的对象。那你这块呢,搭配上new是不是只有一个牛啊?你又没有说在这里边扭一下,这又扭一下,你要每拗一下,那就相当于造个对象了,我就一个拗,所以呢,也就只有一个对象啊。所以这一点呢,大家要把握住啊。好,这是我们说的这个场景啊,那其次呢,我们还想呢,再说一个点啊,这个点呢,是这样子的,看看大家能不能去理解啊。说呢,如果一个类中,呃,声明了啊,我们叫N个构造器。N个构造器啊,哎,这里边说则哎最多有哎多少个啊,构造器中可以使用这种这次形态列表的方式啊。N减一个,哎,声明。哎,这个这次形态仪表的这个格式啊。来的结构啊。
33:01
啊,为什么是N减一呢?N个不行是吗?N个会怎么着啊?你看这里边儿我们有仨,我们是写了俩是吧,诶那你这个里边能不能去掉其他的呢。自己调自己肯定不行是吧,说能不能这块,比如说写个汤姆这个,写个12岁,诶我就调你下边这个。不行,先报错了,为啥?哎,对,相当于呢,就间接的构成了这种递归了是吧?哎,那这个递归的话呢,是一个死循环的一个方式的,哎就好比是我们通过他呢造对象,他呢会去吊他,他呢又调它,它里边又去吊它了。出不来了。诶,这呢,一定要避免这个问题啊,哎,所以说最多的话呢,我们说呢,就有N减一个啊。哎,各构造其中呢,可以生明有这样的一个结果。说白了就是大家呢,哎这呢,比如好几个构造器哈,诶你在互相之间呢,调用这个Z的时候呢,千万不要形成一个环是吧。哎,在这种场景下啊。哎,我这个红色的啊,呃,你这个呢,不能往回掉,往这掉是不是就有个环了,也不能往这掉,这也成环了,呃,你可以往这掉是吧。
34:06
哎,这样的话,大家只要不成个环就行啊。好,那么关于这个这次胶构造器呢,其实咱们也就说到这儿了。哎,就结束了啊,也不是特别难,所以整个来看的话呢,关于这个关键词的使用的话呢,其实还比较好理解。啊,行。
我来说两句