00:00
行,那这次呢来修饰或者说叫调用属性方法呢,我们就结束了,结束以后呢,下边还提到一个,说这次呢,还可以用来修饰,或者说呢叫调用也行啊,修饰调用啊都可以啊,嗯,还可以呢,来。修饰或调用构造器这块怎么理解,这是一个新的内容啊,这我们写个三啊说这次哎,它来修饰或者叫调用啊构造器,哎这呢是一个新的知识点,我们来看一下,此时的话呢,我们写了好几个构造器。啊,那目前的这个构造器里边这个我们初始化的这个信息呢,都比较简单,大家呢,可能看不出来说呃有什么冗余啊等等的情况,其实看到冗余了,你觉得也还可以接受啊,比如说你看我们这里边啊,哎,我初始化的时候呢,写过这两条,你看这里边你也写过,这里边你也写过,但是此时的话呢,就这么一两条,你还看不出来有多少冗余的代码。
01:04
那一旦呢,要是这样写,比如说哈,比如说呢,我们这个,哎,比如他这儿吧,在这儿呢,我们光写个注释了啊,说person啊初始化时。呃,需要考虑啊,如下的啊,1234好几个问题啊等等这些事情,然后呢,我们就开始写这些代码啊,比如呢,我们说共啊共呢有这个啊四人行代码。啊说呢,只要是给我们这个对象初始化,就得需要考虑这1234这四个问题,这呢就得写这四行代码,这你要写了以后呢,这些要初始化是不是也得考虑同样的事啊,那你都得写,哎都得考虑这个事儿啊,都得加上,那这个时候呢,你会发现是不是有一些冗余了。嗯,那有冗余了以后,我们就得考虑怎么能够让这个冗余呢,减少,代码看着更精简一些,怎么办呢?
02:08
可以怎么去解决我目前的这个困扰呢?哎,其实咱们现有的呢,也有方式哈,刚才不是说了,说这个这次里呃,构造器里边是不是可以调方法呀,那你可对你可以把这个操作是不是封封装在一个方法当中。嗯,然后在这个构造器里边调了一个方法,这个是不是每一个都调了一个方法就可以了,对啊,这是一种思路啊,这是一种思路,还可以怎么做呢?就是我们现在要讲的,我们可以通过这次呢的方式来调构造器。啊,来调扩到器,比如说这个里边呢,咱们就写了这40行代码了,然后这个时候呢,我就不想写了,我呢,我就想干脆你都已经写了,我就调上你得了。啊,原来的时候呢,你还得造个方法,把这个放到方法里,现在我连方法也不造了,我就把这个代码呢,就放到你person这个类里,我呢就直接person这个构造器里,我就直接掉你这构造器。
03:06
就完了啊,那这时候就提到了我如何在这个构造器当中调另外一个构造器啊,就是咱们现在要说的这个问题了,哎,我呢就可以进来,哎,比如说我们想调上边这个,哎,那这个Z呢,它其实就表示的是调构造器的情况了哈,你想调哪个,你就看你后边这个参数怎么写了,如果我们想调的是一个空参的。哎,那我就这样写的。啊,我一旦这样写,如果我们通过这个构造器去造对象呢,我们一进来,哎,我呢我呢就先掉它了。我一掉它这不里边这40行代码就执行了。哎,执行完以后呢,我们这个就执行完了,然后接着再执行你自己个性化的代码就可以了,所以咱们就用不着说在这里边去写了,这个你要省的话呢,这个是不是也可以考虑这样对我也这样写啊,这个呢就也省了。
04:04
哎,这个呢也可以去调Z4,但是这块呢,我我还不想调这个空餐了,我想调一下它行不行。目前这个这个写法肯定不满足了是吧?关第二它,诶第二它的话呢,人家这有参数啊,哎,就相当于你这块呢,我们正好我这个A,诶我CTRLC我就放进来,对这块需要大家注意一下啊,我把这个呢,我就放进来了,放进来以后呢,这时候呢,这个是个int型,正好满足这个参数的类型,所以这时候我们其实掉的就是它了。我调的是他,我进来的时候呢,首先调他,他呢,这不就把那40行代码就搞定了,然后的话呢,它还有一行这个代码呢。哎,这个代码说一下啊,我们通过这个构造器造对象的时候,把它呢,是不是就附到这了,这个呢,是不是就附到这了,这呢就是它是不是就附到这儿了,相当于咱们这个属,呃,你这个行参最终呢,是不是还是给造的对象的属性赋值了呀,那你这个代码是不是就不用了,哎,所以我们把它呢,就可以注释掉了,这个一注释下边这个呢,刚才它就掉它,它又掉上面了,这两行其实就都可以干掉了。
05:20
哎,然后再把你自己独立的这个name呢,再初始化一下。就可以了。哎,那这时候呢,你看我们这个里边的这种写法,就是调构造器的一种方式。啊,调不到漆的一种方式。咱们先等一下,我们再去总结啊,比如说我把这个事呢,写成一个c out啊,我写成个infer先啊,哎,我这写了个音符,然后我这块呢去输出一页的音符表示呢,就是我们初始化的时候呢,确实需要做这个事儿,现在呢,你看啊,我用这个呢去造对象,你看看是不是哎能够执行这个语句,包括呢,这个age呢,你看是不是确实附上了。
06:04
我就通过这个来找啊。哎,我这换下号person,嗯,P2用一个person,这呢,我们叫比如叫Jerry,嗯,然后年龄20岁好。这个造完了,造完这个时候呢,我们先执行一下,你就看这个空行这个以后的啊,回撤以后的。哎,回车以后呢,这不那个回车嘛,哎这边你看输出这个信息了,哎这里边的这两行呢,是因为咱们那会儿在这写这个it了是吧,你要用不着它的话呢,你先暂时的把它注释掉也行啊,注释掉这不就不出来了。哎,有这个代码,那说明呢,就是咱们通过这个构造器造对象的时候呢,诶那么多条那么多条这个这个这个初始化的信息呢,我们确实也执行了,咱这呢,只是用一个string来代表了啊,哎,说明也执行了,那同时的话呢,我如果打印一下。
07:06
哎,我这个p2.a,咱们这就得是GET1了,我一执行20能出来吧。可以,哎这个20呢,实际上就是因为咱们刚才说到的啊,我这个A值呢,是在这儿放到这儿了,这儿呢,是不是就这呢又跑到这儿,哎这儿呢,哎一进来以后,这个呢,上面把你的40行代码执行了,同时呢,这个20呢,这不就付给这个属性了。哎,就是我们,呃,都是调的这个构造器的方式来实施的。啊,稍微有点绕哈,哎,我们直接来总结一下。哎,来总结一下啊。哎,这个第一个点这样写吧。说我们在类的构造器中啊,可以使用可以显示的啊,哎,使用叫Z次,哎这个小括号,这那就是一个形态列表,哎,通过这样的方式。
08:15
方式,然后呢,来调用这个指定的啊类的其他构造器。哎,我们可以通过这样的方式呢,显示的啊,来调用指定这个类的其他构造器,或者应该这样说啊,调用本类中指定的其他构造器啊。本类中哎指定的,哎,其他构造器掉的都是我们自己这个类里的啊,你看我这里边有一个话,其他构造器。就是说你这时候钓的是其他是吧,你像我们这个person他是空餐的,他能上来自己钓自己吗?对,这时候就就卡到这出不去了,就跟咱们说那个递归一样,有点像是吧,但是递归呢,我们说也得得奔到一个已知的方向啊,你这样呢,就完全没有已知的概念了啊,我要通过这个构造器造对象的时候,进来又掉他自己又掉查自己又掉查自己出不来了。
09:19
啊,所以呢,我们说这个时候呢,咱们都指的叫调用其他的构造器啊,其他这个都类似,你不能自已调自己啊。哎,所以这我们明确说一下这个构造器啊。构造器中啊,它只能啊,或者要构造器中呢,不能啊,通过这个Z形电列表的方式呢,调用自己啊。哎,调用自己,哎,这个是大家要注意的啊,只能是调别的构造器。啊,只能调别的构造器啊,那那多说一句,你说我调别的构造器,包括比如说就咱们刚才这个事儿啊,我们通过它去造对象,他呢又掉了他他呢上来又掉了这个空餐的,你这算造了,一共是掉过好几个啊,他掉了,他又掉他了,他又掉他了,这这这能说是造了三个对象吗。
10:19
不能啊,这个对象的话呢,还是就一个,只是说呢,我们调的里边这个逻辑呢,我借用了他的逻辑了,这里边又借用他的逻辑了,这个对象呢,自始至终就一个啊,不管你怎么通过这种方式去这个这个调用构造器,那只是造了一个对象。啊,这个大家注意一下啊行,那接着啊,接着我们再来体会一下,那你说呢,我们啊掉其他的行清楚了,这呢就抛开这道问题啊,比如我这是一个构造器,这是一个构造器,这是一个构造器,再画一个构造器哈,是不是我们这个构造器得只能掉别人啊行,我这呢,我他掉他这个构造器是不是能往回掉吗。
11:10
他能回过来说你钓我我我就我就钓你,嗯,能这样掉吗?这一调是不是又挂了,说我掉了你,我呢掉了你了,然后呢,你又掉我,然后我这里边又掉你,你又掉我,咱俩玩起来了是吧,出不去了,又跟刚才那个自己调自己其实类似了,就形成一个环了嘛,是吧。这是一个哈,然后再来,哎,重来哈,哎你呢你钓我,然后呢,哎我呢我掉他,他呢,他能掉第二个吗?不能掉第一个呢也不能,只要一回去是不是就成个环了,对,那他要是掉的话,是不是只能掉他,他呢他掉谁都不行,你掉他成个花,掉这呢也是个花,掉这也是个花,这个哥们就只能是不能掉了。
12:06
哎,只能是这样子了,哎,那就意味着呢,比如说咱们一个类呢,有N个构造器啊。啊,那就是说最多有是不是N减一个,使用这次这种方式了,对啊,你要说我这个不用,这个不用就别用了,那就是这只有俩空着的,最多呢是N减一个。哎,这个大家体会一下啊,哎,这个咱们也写出来说,如果一个类中啊有N个构造器。啊则哎,我们说最多。啊,有这个N减一个哎构造其中哎使用了这个,哎这种这种方式是吧。诶CTRLC,诶最多呢有N减一个啊,使用了它啊好这个就过了啊,然后再接着,哎再接着呢,这个大家可以看成是一个规定啊,规定什么呢?说我们这次行参列表这种方式呢,调用其他的构造器,必须声明在当前构造期中的首行,看在这个首行,哎就是这个意思啊,像咱们下边呢,凡是移用的这个操作,你看我现在呢,目前都放在首行了,当你试图把它呢往后移的时候。
13:31
他就报错了,错误信息说构造器的调用说must be,必须啊是the first statement in the constructor,哎必须呢,是你这个构造器的首行的这个语句表达式,哎,说的呢,就是这个意思啊,哎,这你得给它移上去,这个呢都一样,反正你要往下移的呢,都会报这个问题。啊,这呢,大家可以看成是一个规定啊,相当于呢,就是我们要想调别人的话呢,你一上来必须得先指平,你想调谁啊,先去吊人家,然后呢,再执行你自己的逻辑。
14:08
啊,是这样子的啊,那要是有这句话呢,实际上自然而然的就也提到另外一个事儿,就是你这个构造器内部哈,哎,构造器内部你不能说呃这种情况了,说我吊着它,看着它挺好,我吊他了,我同时我又吊他。是不是不可以啊?我掉了他,我我我还想吊他,就是想写俩,嗯,就是你,你可以这样钓,你可以是嗯,我钓了他,他钓他这样行,你不能是你自己,你掉了他,你还想钓别人,就就比如说你可以喜欢这个女生,这个女生喜欢别的男生,这可以是吧,说你你不能同时喜欢俩,说这是不道德的这种啊,就是你就像咱们现在写的你这不是你必须放在首行嘛,你像你你要写俩是不是总有一个是不是首行呀。
15:08
你后边写一个这个不就不是首行了,不是首行它不就出这个问题了吗?就这意思啊。哎,这个那就是构造器内部,我们说呢,最多啊只能哎声明一个啊,这次形态列表这个方式啊,然后呢,用来啊调用其他的构造器。啊行,这呢,就是咱们说的这样的一些细节问题了啊细节问题了,嗯,后续呢,咱们在这个造一个类的时候呢,提供多个重载的构造器的时候,大家呢,就可以考虑使用这种Z的方式啊,当你一个结构当中已经写了一些逻辑了,另外一个结构也要写这些逻辑,那就别写了,写就冗余了,你就通过这次形态列表的方式去调它啊就可以啊举例子啊,除了咱们自己写的,咱们ctrl shift t一下,比如说呢,我们看一个这个叫哈希,后边咱们要讲集合中的一个结构啊,哈希map,嗯,哈希map呢,你就把它看成是一个类就完了啊,至于他干什么的,先不用管。
16:18
它呢也有构造器,嗯,你像这块。嗯,像这块哈,哎,这个构造器的话呢,它就写这个Z了啊,那这个Z呢,我一点开,你看这里边是不是好多逻辑了,那就意味着呢,就是这些逻辑呢,人家写了你呢就不用写了,你直接这一下,直接他就帮你把这个事该做的就都做了,哎这个代码的冗余呢,这不就降低了吗。哎,类似的话呢,还有很多的这个情况,大家都可以去看,哎,通过这样的方式,哎,我们呢,可以降低这个冗余啊,再比如说看再看一个哈,嗯,比如说看看这个a list这个啊,我CTRLF我这样搜索啊,这次这个单撇的情况,Find。
17:06
Not的没有是吧,那没有那就没有了,那就人家这块都是自己写的是吧,他都自己写的啊,再换一个ctrl shiftt,这不给面子是吧,String ctrl f啊,这次撇find的。啊,这好像是打叉了,哈哈,呃,这个咱没见过,对这个叫叫过时了啊,但过时也能看啊对,诶这呢,他写了一个字符串,我们可以通过这样的字符串呢,去来造一个string啊,这个咱们后边说啊,你现在就当没有它,没有它的话呢,这个线就不会拉掉啊,然后我们这个掉的时候呢,它就调了另外这个结构了,那这个结构一点开啊在这儿呢,那这个逻辑呢,哎,当我们通过这个构造器调的时候呢,就不用写了,你直接呢调嗯那个构造器就OK了啊再放他一下啊这个这不是正常的吗?我们要是哎通过这个构造器去造一个string的时候呢,它就调另外一个构造器了,哎,这个构造器中写了这些逻辑,哎,我们这边这次一下呢,就省了你自己写了,直接呢就蹦过来掉这。
18:12
啊就是这个意思啊,具体细节呢,大家不用去关注了,就啊成,那咱们刚才的话呢,就把这个诶这次呃这次呢来这个呃调构造器的这个问题呢,就也说清楚了,那至此的话呢,这次来修饰这个或者要调用啊属性方法构造器,整个呢我们就结束啊。
我来说两句