00:00
那接着我们再来谈谈这个构造器其他的一些细节问题啊,那这呢,咱们是定义了一个构造器,那实际上呢,我们说呀,这个构造器我可以在一个类当中呢,定义多个,你会看到我们这个string当中,你看这么多都是。这些都是,所以呢,我可以定义多个构造器,那比如说我们来定义一下啊,除了这个之外呢,我们再定一个,我叫public。哎,我再写一个person,那不就是可以体现为这个行参的区别了。目前这俩肯定不能同时存在了哈,我这定义行参,那行参我们定义主要用来干什么呢?对我们说呢,就可以用来初始化咱们造的这个对象的当前的这个属性,比如说我这写了一个死string性的N,哎,我呢就可以在这里边呢,给我们这个N赋值,给这个name。啊,那就意味着呢,我们在造这个对象的同时,是不是就把这个name值也给附上了,哎,对的,那举个例子啊,你像下边呢,我这我这P1等于new一个person,哎,咱们既然定义了这个构造器了,我就可以用在这个位置,我写一个to。
01:11
哎,那么就意味着,哎,我们这个Tom它就赋给了这也叫刑残啊,把这个Tom呢,复制给我们这个N,这个刑残这个N呢,在里边又付给我们这个name了,那这个name是谁的呀,谁掉就是谁的是吧,我当年是不是就是P啊。你理解为呢,就是咱们当前正在创建的这个PE对象的啊,就附上了,那附上以后我们自然而然的,我这通过PE去调这个name,但是咱们没有体现这个封装性啊,我就直接可以还调它了,哎,那它就应该是to。那就有,哎,那说明呢,咱们这个构造器,它其实还可以体现为第二个作用啊,就是我们一方面呢是用来创建对象,另外一方面呢,咱们在创建对象的同时,是不是还可以给我们这个属性做初始化呀。
02:05
哎,可以初始化,哎,我们这个对象的属性。哎,这样的情况。哎,这个呢,你看我PPT里边,哎有这样一段话哈,哎,比如说我们通过这样的方式,这呢,我写的参数就更多了啊,写了个Peter特,写了一个15,哎,Peter特呢,你是个变量名了哈,你要是个具体变量值的话呢,你就得加上这个双引号了啊就这样一个意思啊说呢,呃,如同规定每个人一出生就必须洗澡,我们呢,可以在人的这个构造器中加入完成洗澡的程序代码,于是呢,每个人一出生就会自动的完成洗澡,这样程序呢,就不必在每个人出生以后呢,一个一个的告诉他们说要洗澡了,这个能看懂吗?对,就相当于我们在通过构造器造对象的时候呢,我就把这个洗澡的功能是不是就洗到这里边儿了,这样的话呢,你造对象的同时呢,就自动的只要造完了,它就自动的就洗完澡了,而不是说呢,你这个造完以后呢,我再通过一个P去调一个方法,然后让它洗澡再造对象再掉一下,那还挺复杂的,诶咱们相当于呢,把这个洗澡这个事儿呢,就认为是一个初始化的操作了。
03:13
通常呢,咱们初始化的都是一些属性啊,所以我就可以叫初始化啊这个或者你简单写一个叫初始化对象也行,通常呢,都是初始化的这个属性啊,或者叫初始化这个对象的一个信息啊,这也可以啊,洗澡啊等等,这都算初始化的一些信息啊,这呢就是咱们这个构造器的两个作用,也就这俩作用啊,就这样啊。好,那接着咱们看我这呢写了一个,这呢又写了一个,你还可以在这接着去写,哎public,哎,我这呢写一个person,咱们呢还可以磁针形的N,我再加上int型的A,哎我呢在你初始化这个对象的时候,把这个name和A呢就都给它初始化了。啊,那么这样也是OK的,那么咱们把在一个类中可以定义多个这个构造器,把这多个构造器呢,也称作叫重载。
04:10
啊,也称作叫重载啊,那像磁钝一样,这些呢,构造器也都叫重载啊,前面咱们讲过方法的重载,这个呢叫构造器的重载,其实也很好理解啊,说一个类中定义的多个构造器啊,彼此构成承载,这个呢很好理解。啊,很好理解啊,就是一个概念性的内容啊,嗯,这时候你就不用多说了,这构造器肯定跟那个类是同名了啊,你这都是同一个类了,那既然构造器的名肯定也是一样的啊,嗯,这是这个事儿,然后接下来我们说这样的一个重要的问题。什么重要的问题呢,大家看啊,咱们那会儿提到一下,说说你这个没有写构造器的时候,咱们这个person可以去new说呢,说系统给咱们提供了一个默认的,那既然系统给我们提供默认的了,你像可能会想啊,我这个是不是就写多余了呀。
05:09
他不都给你写了,就会感觉这个是多余了是吧,我们是不是就想把它给注释掉啊,哎,我一注释掉,大家你会发现上面报错了,报的错误信息,说the constructor叫person,空三的,没有定义。诶,你不是有一个默认的吗?对,你会发现呢,本身有说是有个默认的机构,现在提示我没有了是吧?那咱们当时为什么能用呢?是因为当时的时候呢,一开始还没有这俩,我把这俩呢也注释一下,你会发现上边又没事了啊,这个报错很正常是吧?咱们主要看这儿啊,下边没有了肯定报错了,这个呢它又不报错了。这也不报错了,咱们一看这报错了,那我就想把这个打开,把这个一打开呢,这不报错了,上面也报错了是吧,摁住这个那个起来了哈,那你说这个我们怎么去总结一下这个事啊对,就相当于咱们要是没有定义的时候呢,他确实呢提供一个空参的构造器,但是一旦咱们定义了构造器了,这个空餐的呢,它就不给你提供了啊就是这个原因,那你还想用,那你是不是就得重载着这样去写多个了。
06:24
哎,这样都打开,所以咱们去总结一下这个啊什么意思呢,就是说一旦我们显示的定义了类的构造器。哎,类的这个构造器啊之后。哎,那么我们说这个系统呢,就不再提供默认的空参构造器了啊,一旦我们显示的定义了这个构造器之后啊,系统呢,就不再提供默认的空参构造器。哎,这就是我们要说明的这样一个点。
07:00
嗯,那这个事我们怎么形象点去理解呢?就不再提供了啊,举个例子啊,嗯,这个相对来讲也比较贴贴合这个这个情况,就是咱们说这个国家呢,都会提供这个叫这个国家现在不是扶贫的力度还挺大的啊,就是如果说你这个家庭里个家庭里边这个劳动力的,呃,没有劳动力了是吧,那为了保证你能够生活下来呢,国家呢也会给你扶贫,就是给你每个月开多少钱啊,像以前那时候,上个世纪90年代,那时候国企改革,有大量的这个下岗工人是吧,父母呢都都下岗了,然后呢,孩子还得上学,没有这个生活来源了,怎么办呢?那这个时候呢,就是国家呢,先考虑给你补贴啊,就是你没有这个月收入了啊,要生存啊,根据你这个城市的这个生活水平,比如说呢,诶提供2000块钱。啊,这要在北京是有点困难的是吧?嗯,这个一个月呢给你2000块钱,这2000块钱呢,你可以理解为就像这个空三的构造器一样,就是你不挣钱了,我就给你发钱先,哎,然后呢,呃,这个父母呢,比如说诶他们这个发现诶自己可以做点小生意了,哎然后比如说像北京那时候现在少了,像那会儿呢,在北京每个地铁口都有卖那个摊那个煎饼果子的是吧,早上呀,中午还有下午下班的时候,那还还可以啊,那挣得肯定比这2000要多了,诶假设你有自己点小生意可以去做了,诶一个月呢下来比如挣了3500,诶那这时候的话呢,你能够自食其力了,能够自己挣钱了,诶国家呢一看说诶你能挣钱了,这个钱呢,我就不给你发了。
08:36
哎,其实就跟我们这个时候呢,有点像啊,你要是没有这个构造器呢,我就给你提供一个,但是你一旦要声明的构造器呢,你有自己的能力去造对象了,我就不给你再提供空参的了,哎,就相当于这个意思一样啊,哎大家去体会一下。行,那你想想啊,就说你要没有我就给你,你要有了我就不给你了,总之呢,我们会发现在一个类当中一定会有过到期对吧?哎,我们说一个类中啊,一定会啊这个或者这样说吧,一个类中是不是至少要有一个过渡期啊。
09:15
啊,至少会有一个构造器,这一个呢,可能是默认的,也可能是你自己写的啊,这呢就是我们说关于这个,诶构造器这块的一个知识点啊,那其实也就这样了,需要大家掌握的就是构造器它的一个作用啊,构造器的一个作用,然后呢,我们这儿呢,提到了这样的一些细节,大家需要会去定义构导器啊,需要会去定义构导器,然后的话呢,呃,我们呢,能够知道这个类里边一定会有构导器,相当于呢,它得给我们去造对象的这样的一个能力,是吧?啊,有构造器了,你才可以去造对象啊。
我来说两句