00:00
行,那么关于这个类的封装性啊,咱们就说清楚了啊,然后下边的话呢,我们再看一看下个内容,关于类的成员之三,诶叫做构造器啊,叫做构造器,然后对应的就是我们的爱硅508。嗯,这块我们讲封装性的时候,我把这个代码呢,一不小心给写到这里了是吧。啊,这是我把它这个拖到上面这块啊,哎,咱们还让他回归到这儿行,那么下边的话呢,咱们来看一看这个构造器的内容,构造器的话呢,属于我们这个类里边的第三个成员。前面讲过属性,讲过方法了,那么构造器也是非常常用的一个结构。哎,常用到什么场景呢,就是我说呀,一个类里边呢,一定会有构造器的。哎,就常用到这个场景啊,那大家可能会说那一定会有构造器,那咱们到目前为止也没看到过造器啊。呃,其实呢,我们已经默默的在使用构造器了。你看啊,我们举一个例子。这儿呢,我写一个类呢,叫做person类。好,这个person类里边呢,你看我声明咱就先我就不考虑这个权限的问题了啊,诶所以这块我就先词钝型的name啊,Int型的A,哎,这个人的话呢,这个我们写一个方法啊,叫做it。
01:11
哎,这个我们写一个输出啊。哎,说这人吃饭是吧,OK,这是一个方法啊,比如说再来一个吧。在这个a public avoid,再来一个sleep。一个hour啊。哎,这几个按说每天。睡眠。哎,多让哎睡睡眠啊。哎,多少小时啊?好,这呢我就写两个方法,那按说的话呢,说你这儿呢叫属性,这个我们已经比较清楚了,这儿呢叫方法。没了。诶,我们也没有写,说其他的所谓的构造器啊啥的,没写是吧,好没写,然后接着来啊来你看。我们有了这个属性方法之后呢,诶,按照前面的知识点,我们就可以去做测试了。
02:02
哎,那么测试的时候呢,咱们就会去创建类的对象。比如这个我们叫P了,诶我们就造了对象,通过这个对象的话呢,我们去调属性调方法,如果呢,使用上封装性,那一般咱们就不直接去访问属性了啊,加上私有啊这块我们又加这个私有哈,哎,咱这块比如说就访问方法。就完事了啊,诶完事以后的话呢,诶大家你看这行代码。以前的话呢,咱们没有深究过它啊,现在的话我们就专门来看它。左边呢,这叫类型。啊,然后呢,这是一个变量名new,后边呢,就是我们的一个具体的对象了。你说我们用后边这个东西是啥。已经说够到期了,那就预习过的啊,假装没有预习过呢。啊,你有个方法了是吧,首先你后边右边呢,你肯定不能说扭个类了哈,你要扭个类是不是应该也长这样。对,你这叫累,你累后边你加了小括号,它肯定不能是一个累了。对,当然你说不是个类了,加个小括号,到目前为止呢,我们就建方法加个括号是吧。
03:05
诶,但是但是呢,我们这个类里边明显你又没有写这样的方法啊。这是一个点,另外一点的话呢,就是这个方法呢,如果你要看到这个方法,这个方法还挺特别的。他跟那个累呢,累呢。通名是吧。哎,那其实呢,这个结构啊,就是构造器。哎,他就是构造器,哎,那他要是构造器的话呢,而且我们还认为是这个类里边的一个成员,那我也没写呀。哎,没写就意味着它会默认有一个构造器是吧。哎,就这样的场景了。好,那就我刚才引入的那句话啊,说呢,我们这个构造器啊,对一个类来讲呢,其实还是很常见的,常见到呢,每一个类啊。都有过到期。这句话咱们自始至终都是对的。啊,因为以后呢,我们还要讲一种特殊的类,叫做抽象类,什么叫抽象类呢?就是这个类啊。他不能找对象。
04:00
啊,你如果说这个类呢,看成是一个母亲的话,造对象看成是生孩子的话是吧,那抽象类呢,就是不能生孩子的。是吧,嗯,这样的场景啊,哎,那即使是这样的话呢,抽象类也有构造器啊。诶,所以我刚才说一句话说的这个说凡是类呢都有构造器,这句话呢,是自始终啊,它都是对的啊,那行了,咱们关于这个构造器呢,先有了一个感性的认识,下面我们来看看他是来干什么的啊。这个构造器的话呢,如果我们用这个英文来刻画呢,叫做坑。Tractor。哎,对,就是这个单词啊。Constructor,那一提到这个单词,这个你就别看汉语了,咱就看英语啊,因为这个毕竟是从英文呢,咱们翻译过来的啊,你说呢,在一个类当中,它有一个结构叫做constructor。啊,有些人我也不熟啊,熟吗?啊对,建造建设这个动词是吧。动词都用这样表示啊,叫建设,建造。
05:03
啊,或者叫创造是吧。哎,这个都可以啊,这叫这叫动词。哎,那么它对应的名词呢,还有一个叫construction是吧。这三个名词,这就是这个名词的,这个叫建造建设呗。呃,建设建造吧,就他比如说呢,这个中国建设银行。China construction bank。啊,就是存存吧,是吧。哎,这个就是这个中国建设银行,这不就建设的意思是吧,诶那在英文里边呢,这种动词后边加,呃,Ion就是名词的意思。再加一个O2。或者加一个ER。啊,一般呢,是不是都是对应的,这叫什么。对。对,就是一般都是人了,都是吧,对,一般都是人哈,就是呃,建造建设的这个人。啊,要建设者建造者是吧。建设者。
06:01
诶,或者叫建造者。建造者是吧,哎,一般都是这个概念了啊,你比如说我们这个work。啊,哎,这个叫worker。啊,工人是吧,呃,还有什么呀。Farm。啊,这是农场是吧,哎,Farmer farmer是一吧。哎,我这写对吧。啊,即使对。Teacher是吧,哎,这个类似的啊,还有那个比如叫visit。哎,这不是or吗?Visitor是吧?旅行者啊,等等。呃,旅游旅行是吧,这样的啊,诶这个呢,就OR2和E2呢,表示的就是,呃,对应这样那样人啊好,那你想想我们在一个类当中定义了一个结构,这个结构呢叫做建设者建造者。啊,那我们就会想,那他见到什么。诶对,诶咱们这企业说了,哎,他呢,是不是你这样,你又配合上这个构造器,是不是就用来造对象了。
07:04
你要没有这个构造器,你把它一拿掉,光一个用,这不行啊。哎,就没办法去创建对象了,诶所以这块呢,我们自然而然,哎就引出了叫构造器的一个作用了,诶这个呢作用呢,诶我写成两个哈,它的作用一呢,我们说呢叫搭配。啊,New关键字。哎,关键字,哎,然后呢,创建。哎,我们叫类的对象,或者叫创建类的实例啊都可以。诶,你看我又自觉的不自觉的就写了个作用一是吧。哎,这个怎么也得来个二了啊。对这块我我这样写了,大家以后如果要是笔试面试的时候呢,你比如说让你答一个知识点,说这个知识点是什么样子的,哎,如果你的脑海当中浮现了有。四个点的话是吧。嗯,建议呢,你不要一上来说这个问题呢,有四点。嗯,因为这样,你要是万一紧张的话,你123第四个忘了。
08:01
是吧,诶你答的时候你就说,诶这个呢,是这样子的,你就答一个答一个,诶答到第三个呢,第四个忘了,那你就说主要就这仨是吧。对啊,所以这是一个小技巧啊。嗯,一般的你看那个有的领导说话,我要讲四个点,那他就得记得住是吧,他不能讲了四个点讲了仨,最后给忘了,你说第四个。很尴尬是吧,这个就不好了哈,面试的时候因为你很紧张,有时候呢就会。哎,有时候呢,一下子就就就想不清楚了,所以你别上来一下跑几个是吧。好,拉回来啊呃,这个作用第一个说清楚了,呃,咱们这儿呢,看的也非常的清晰啊好,第二个问题啊,呃,那除了我们用来创建对象之外,还能干什么呢?在刚才的这个构造器当中啊,其实大家是看不出来的啊,紧接着咱们就来演示其他的这种构造器了啊,或者我们去显示定义构造器,诶其他这个作用呢,我们就可以理解成呢,哎,在创建对象的同时。诶,对象的这个同时啊,可以给啊这个对象的相关属性呢,诶赋值。
09:05
哎,这就它的第二个作用了。好,那说到这样做的话呢,那我们下边是不是得具体的看看怎么去用了哈,哎,那首当其冲的话,我们就要看一看这个构造器声明的格式啊。诶生命力格式,格式呢是这样子的啊叫权限,诶修饰符,诶咱们刚讲过封装性了,哎,它呢四种权限都可以用来修饰构造器啊权限修饰符后边呢,注意跟方法不一样,它没有所谓的返回类型。呃,直接呢,就是我们这个构造器的名了,那其实就是类名。OK啊,然后呢,有一对小括号。对,小花里边呢,也可以有行参列表。哎,然后呢,你大括号呢,就是你这个构造器的这个体啊,你想干什么,你就里边可以写啊,哎,那通过这块的话呢,我们就能看到了,可以给属性赋值的事了。哎,就跟这儿呢是对应的啊好,那既然呢,我们是这样写的,那下边咱们就可以呢,去看一看具体的这个演示的一个问题啊,这个往往这边诶。
10:06
往这边拽一下啊。哎,这呢,是咱这个他俩交换一下吧。嗯,这个我们再把这个打开一下。放哪了?好在在下边儿了啊,这个我们再拽回来啊。把这个打开。哎,这么着一下啊,这边的测试,这是咱们本身的这个类啊。好,把这个我们收起来,嗯,在左侧的话呢,我们这个位置吧,去写这个叫构造器。哎,构造器啊,你看这块都没有报错啊,我现在呢,我这么着写一个啊public,哎叫person是吧,然后一个小括一个大括号诶。就这样了。那这呢,我就写出来了,相当于呢,我现在显示的把这个空三的构造器呢,给定义出来了。那我定义完以后的话呢,诶我说呀,这个结构其实就是它你看哈,我在这边我按住CTRL键,我一点,那就点到这来了。或者再换句话说呢,我这里边我可以写一个输入语句哈,我就写个person小括号点点点点点,然后大家你看我右边啊,我去做一个运行。
11:06
诶你会发现呢,你看他这个就执行了。那说明呢,这个结构。就是他。相当于呢,咱们现在就显示的把这个构造器呢,我给定义出来了哈,哎,那我要是没定义呢,你发现呢,这块呢也有是吧。诶,这就是咱们所说的这样的一个知识点什么呢?就是诶,我们在创建好一个类之后啊,说如果啊,当前这个类当中啊,没有声明任何的构造器的话。诶,他会默认的给我们提供一个。空餐的过道期。OK啊,好,这块写上。创建类以后。在没有提供没有显示啊。提供任何构造器的情况下。哎,系统呢。会默认。啊,提供一个叫空餐的构造器。
12:01
这呢是我们刚才通过这个测试呢发现的,呃,我说呀,还有一种啊,证明它的方式啊,怎么着呢,你看这个代码我写到这儿之后呢,诶,但是你看这啊,这有个叫build啊。Build这块有个叫re comp啊person.Java就相当于把我们这个,呃,原文件呢,重新的做一个编译哈。诶,我让他重新编译的目的呢,是让让他呢,重新去生成这个自解码文件,对吧。诶,重编一下,不就重新生成最起码文件了吗?哎,这时候呢,就我把它注释掉了啊,注释的信息呢,我们说是不存在。最起码文件当中的哈,好这块你看打开咱们找这个al啊。咱们现在讲这儿呢。找到咱们的这个零八了是吧,构造器,嗯。刷新一下。哎,这是不是就有了。好,这呢是这个词加码文件,咱们知道idea呢,它已经针对这个词加码文件呢,进行了一个反编译了,所以我一双击大家看。诶,这时候呢,把我们生成的这个啊,反编以后的这个资金码文件里边,你是不是就看到构造器了。
13:05
这是原本的这个代码里边没有构造器,你看反编以后,这不是点class文件吗?这不就有构导器吗?而且这个欧大庆你看一下他的权限啊。他们那个是吧。还说一定是public吗?不一定啊,你看啊,我把这个person这个类的给我去掉,我再重新做一个编译。重一遍以后呢,再回到这儿。啊,这个我都不用刷新了,你看自动它就给刷新了啊这呢没有public了,这是不是也没有了。哎,这就相当于默认呢,给我们生成的这个构造器哈,把它收起来看这儿。这个往这拽一下啊说呢,创建了以后,在没有显示提供任何构造器的情况下呢,系统会提供一个空参的构造器,那么接着啊且。构造器的权限。对权限呢,对与类声明的权限相同啊。
14:02
权限与啊类,哎,声明的这个权限。哎,相同。这是我们说的这个默认的一种情况。哎,就可以了,好,那既然你默认有这个了,那那我们这块呢,就先不考虑这个默认的事儿了啊下边呢,我们就想显示的,我来去定义构造器啊,这个呢,我给注释掉了,我们再去定义其他的构造器。哎,或者叫声明啊,其他的构造器好,刚才我们提到说这个构造器的话呢,还可以带参数哈,这个参数的话呢,一般的时候我们都考虑呢,是对这个类中的属性啊做一个赋值的,比如说这块我就写个因特型的一个A了。然后呢,我们在这个构造器里边呢,我就写个啊。H呢?赋值为A。相当于呢,就是我们在通过这个构造器呢,不是用来造对象吗?哎,造对象的同时呢,还把这个呃属性age呢给附上值了。哎,就是这个意思啊。好诶大家看哈,好有点问题你看。
15:03
发现了没?对,我这块呢,刚写完这块报错了。他说呢,你这个呃,带int的这个构造器,我们在当前这块呢,没有用,就相当于人家是一个带一个int型的参数,然后这块呢,他说你用不到这个空在这里边,诶不是有个空参构造型吗。是吧,再看啊,我把这个写的这个构造器啊,你看我注释一下。我一注市呢,他也没事了。我一打开呢,它就报错。那就相当于我们发现呢,当我打开的时候呢,这个空舱的构造器呢,不存在了。代餐这个还在啊,你比如说下边你看我这个person。2NEW一个person,这我写个一。那这肯定行。哎,这个构造器现在是就是它。但这个不行。啊,这个我们想强调点呢,就是说一旦你显示声明了类的构造器了。我呢,就不再给你提供这个默认的空餐的轨道器了。
16:04
你说我就想用就想用,那你自己把它再定义出来。啊,这呢,就我们要强调的这样一个点啊好。诶,上面这不我们说了,说你要没有显示提供的时候呢,提供一个默认的是吧,诶下边啊说呢,一旦啊类中显示声明了,哎构造器则系统不在。提供默认的空参的构造器。哎,那你要想用,那你就自己再显示的去声明就可以了。啊,这个事儿的话呢,我们可以举一个生活中的场景啊,比如说呢,我们这个每个城市呢,都有这个最低生活保障的一个县。啊,比如说这个劳动法里边也规定了啊,说你要是这个城市的这个各个这个企业啊,在应聘员工的时候呢,比如说北京啊上海。北京上海是多少,大概?大家觉得在这个上海要想生存的话呢,一个月挣最少得挣多少钱?
17:01
1万那就多了。你想吃成啥样住成啥样的。1万。嗯,3000块钱你有不。2400多好,这是专业的啊,两千五八咱就。哎,就是低于两千五的话呢,我们可以认定呢,就在上海,咱就活不下去了。啊好,嗯,那这呢就相当于是叫最低生活保障一样是吧。好,那比如说现在呢,这个企业应聘员工的时候啊,这个。诶,我们这里边说提供一个空调构造器,它类似于什么呢?你在上海生活,但是现在呢,你的这个劳动能力丧失了。啊,但是呢,这个出于人道的考虑,国家呢,是不是就会给你发一个钱是吧,说你看你也没有劳动能力了,那我一个月呢,我给你发2500。哎,保证了你的一个正常的生活。是吧,哎,这样的好了,突然有一天。啊,你这块呢,这个这个突然就好了是吧。好了以后的话呢,你这时候呢,诶去找了工作啊一算呢,诶自己能挣7500,诶说呢,诶你看自己挣7500,政府呢,再发上两千五一凑,诶一个月1万块钱。
18:07
想的挺好是吧。诶,但是其实呢,一旦你要是工作以后呢。诶首先这个工作呢,肯定比这个高了哈,最低生活保障了是吧,诶一旦你有工作以后呢,国家呢,这个钱呢就不给你发了。诶,你就自己拿你七千五就完了。哎,就跟我们这儿呢,你靠一靠是吧,哎,你要没有扩大器呢,我给你提供一个,为了便于让你去造对象。但是你要显示的已经有过到期了,那不好意思了,这个我默认的我就不提供了。哎,就按照你提供的这个,你看你想怎么造对象了。哎,就可以啊。好,这个大家体会一下,哎,然后另外呢,通过我们这里边儿的这个一啊,诶有参的这个构造器,大家再去体会一下我们这个作用二可以给这个属性赋值,所以进而哎,我们去打印一下这个p2.age的时候。哎,他应该就有这个值。来来,我们去run一下。哎,这不就有这个一了吗。哎,我们就给它给附上值了。
19:02
OK啊行,哎,那么进而哎,我们在一个类当中啊,其实就可以创建哎,声明多个构造器。啊,比如我们可以接着再去写啊,诶person类型,针对我们的name,我们做初始化的。这样是吧,好,那我们也可以呢,再去造一个,两个都给初始化的。哎,A,哎,是不是可以啊。啊,你看这好几个啊,那么这些构造器呢,咱们也给它们啊,理解为叫重载。啊说呢一个类。啊,可以声明多个构造器啊,彼此之间啊构成。重载。所以呢问说,诶构造器能重载吗。可以。哎,可以重载的啊,行,那我们看一下这个API哈,API里边呢,比如说咱们就看一下这个典型的就这个死吧。哎,磁针进来,哎往下走,哎这儿呢,就我们所谓的这个属性。
20:02
哎,紧接着这块呢,叫constructor。那这个呢,就我们所谓的叫构造器。诶,你会发现呢,这些构造器呢好多这就叫重载了,而且名字呢都跟类名是一样的,参数类型这块呢就都不一样了。既然能重载名一样,但是参数类型是一定不能一样了,对吧。OK啊好,然后再往下呢,这块叫做方法了。这呢就是我们这个类当中典型的三类结构啊,呃,那么也有呢,就把这个构造器啊。是不是构造器嘛,啊也有呢,把这个构造器呢,就称为呢,叫构造方法啊。嗯,叫构造方法也行啊,好多书上等等也叫构造方法,但是呢,呃,希望大家能够清楚啊,构造方法它跟咱们所讲的一般的方法不一样啊。你看在这儿不也能看得很清楚吗?构造器是构造器,属性是属性,方法是方法,是不是几个并列的结构?而且通过英文呢,你来看constructor跟这个method是没有任何关系啊。
21:00
哎,所以咱们这个中文呢,有时候叫构造方法了,你知道说的就是构造器的事。以前我记得问一个同学,我说那个类当中都可以声明什么,他就说有构造方法,我就问,我说构造方法跟方法什么关系?他想了想说,构造方法属于方法的一种。哎,估计呢,就是语文学的挺好是吧。啊,限定一个作用呢,这个就是有限制条件的方法是吧,注意跟方法没关系哈。哎,注意跟方法没关系。这呢,就咱们说的这个构造器的这个事儿啊,其实比较简单啊,我们在比较早的时候呢,已经见到了,只是当时呢,我们没有明确而已。那进而的话,你看咱们写这个scanner呢,现在如果大家再去问这个,咱们就更有底气了。哎,干你看后边我们是这样写的啊。啊,之前呢,没有同学问问的时候呢,还真不太好跟你说啊,我们new person,为啥你这是空的,为啥scan后边就有东西呢。哎,现在不就知道了,这是不是构造器啊。它构造系里边呢,有行参是吧。
22:01
哎,我们这儿不是传了个食餐呗。OK啊。大器不太难啊,然后后边呢,就是对应的这个课后练习题啊。好,那么接着的话呢,我们来看一下这个构造器对应的这个课后练习题了啊,这块一共提供了有三道题,先看第一道题说定一个student类啊,有四个属性,呃,提供了相应的构造器,然后通过构造器呢去造对象,呃,然后呢,你在调用指定构造器的时候呢,还可以给我们对应的这个属性呢,做一个赋值操作。行这呢,我们就从这儿到这儿啊,CTRLC。创建student。哎,这样一个类。只能把它粘过来。有点多啊。好,首先呢,来看这儿了啊。定义呢,四个属性。定义思歌属性这块呢,他没有提这个private这个事儿啊,这道题咱们就单纯一点,咱就不体现这个封装性了,诶后边呢,大家你也可以把它都私有化,然后再提供盖方法啊,诶我这块呢,就单纯的来练一下咱们构造器的事儿。
23:05
哎,四针形的内。In的age。啊,四针形的school是吧。哎,这是学校,然后实质类型的major。哎,这个叫专业哈。哎,这就可以了啊,然后下边呢,我们去提供这个不同的构造器。Public。Student正形的N。现在型的A。哎,这里边儿这个N呢,是给name赋值的。啊,A呢,是给age复制的啊,这是一个啊。然后第二个。TRC啊。诶public啊,就是目前呢,咱们诶这个都考虑把这构造器呢给他public了,就是让他在外边儿呢,都可以使用对应的构造器造对象啊。哎,这个是死故啊。S啊。好,最后一个把这四个属性呢,都给它初始化了。
24:06
这个咱们三个呢,可以直接粘过来借用一下啊。呃,大家可能也会觉得说说你这个,你看上面这个写的在这块又写了一遍,是不是有点冗余啊。不是不容易啊。啊,又怕引入新知识是吧。哎,有点冗余,咱们后边讲这次把它干掉啊。好,目前的话呢,咱们就写成这样了啊。没说空餐的。人家没让定义,那咱就不定义了。除非你把题改了是吧。嗯,好回过来下边呢,在没方案里边调用不同的构造器呢,造对象,嗯,行,那咱们就他这块,我倒是可以去提供一个方法,打印一下这个属性值哈。String类型的,我们叫get infer吧。哎,这个咱们来一个I name。逗号A。
25:02
这个age,然后再来一个逗号啊。然后再逗一下,来一下这个。哎,没准行。可以了啊。完事了,然后回过来,哎,我们去写这个对应的测试类啊。Student它的一个测试。哎,没方法啊。好,那么这时候的话呢,你注意我们声明的这个student里边呢,没有空的构造器,所以呢,你上来呢,就像以前一样啊student,你有一个student,哎,这就报错了。啊,因为呢,你写的这个构造器,我们就不再给你提供空餐的了啊,所以没有没有不好使了。不行是吧,哎,那顺带呢,我们再说个快捷键哈,你看这块我们去调构造器,咱知道了没有空参,当然呃,有其他带参的,那参数是都有啥参数的呀。看不见了。你你看啊,小细节啊,Student小括号。
26:04
谁说你写错了?Student小括号。诶,你看这时候还能看到是吧。哎,走了再回来。就没了。啊,这个是有点儿差,差点意思是吧,诶怎么办呢,CTRLP。你把光标放在这个小框里边啊,CTRLPP呢就parameter。参数的意思是,哎,这就能看到了啊。哎,这时候你就往里边写就行,比如先写这个学生的名。啊,学生名啊,比如说这个。刘强东啊。哎,年龄。啊,应该快50岁了吧。48比如说是吧。啊,这个学校。啊对,中国啊,人民大学啊。然后专业。知道啊,社会学啊。哎,这样我们就写上了。哎,这呢,我们就给它附上值了是吧,这个相当于我们用的那个构造器,是这个参数比较多的这个啊。
27:03
行再回过来,然后这时候我们S一点get一个INF符是吧?哎,我们去打印一下来,这呢就能看到这个信息。哎,你看这都有啊,诶所以呢,这时候嗯回忆一下啊诶构造器的作用,第一个呢,搭配上new用呢来创建对象,哎同时的话呢,我们可以通过参数的方式呢,给创建的这个对象呢,相关的属性呢都附上值。哎,这是它相应的这个作用啊,这第一个啊,再来一个student。哎,你有一个student是吧。这个。奶茶妹妹是吧?其实一般的我写写这个一般都不爱写名人。因为就怕后边老是翻车啥的是吧。但是东哥已经翻车过了是吧?嗯,后边应该是踏实多了哈。哎,30吧,诶有30吧。没有二十八九差不多。看这就是成功男人是吧,嗯嗯,这个是嗯,清华是吧。
28:06
你华人,人家俩还都去留学过啊。是在哪儿哥伦比亚还是哪儿啊?嗯,行,这个我专业我不写了啊,我用这个了啊。诶,然后这时候呢,我们去S2点get一个音符啊。诶去输出一下,那此时呢,就针对这三个属性呢,做了一,诶我们这个类里边呢,Name age和SCHOOL3属性呢,做了一个初始化,后边这个major呢,没有初始化。啊,这个我们再去run一下,诶你看到这块呢,因为没初始化死人形的,那就是个no。哎,这就可以了。哎,这呢,就构造器的作用啊,非常的清晰啊。好,那么第一道问题呢,我们就说到这儿了。改过了啊,然后看一下第二题。第二题啊,说呢声明两个类啊安。是angle angle是吧,Angle。对,这个这个不是三个天使啊。对,这个呢叫角是吧。
29:04
对角度角,然后呢。这样写吧。这个是天使啊。对,别别别整混了啊。这是三角形。三角形跟三个天使差别大了啊,三角形和三角形的测试类啊,它呢,诶三角形呢有底边长有高,这是属性,然后呢提供盖塞方法,这就是体现这个封装性的啊啊构造器加上构造器,然后呢在另外测试里边呢,去测试一下行。这样啊。嗯,那就这样吧。盯一下。好,在这儿又建新建一个class啊,Tree tree就是三的意思啊。An angle。行,没问题啊。嗯,然后呢,这里边声明属性啊,在这里边提到了,说你提供盖塞方法了,所以我就碎化了啊,这个double型的base是底边长。Double类型的。
30:01
He。高啊。行,那接下来的话,我们去提供这个概算方法吧。Public doubled get一个。哎,这样啊。Public VO的set。哎,大部型的一个B。哎,这样啊,好public,哎,大部行的get一个hat。啊,Return一下我们这个hat。Avoid是吧,哎,Set一个hat。啊,大型的一个H。这个你别看我在这写的可能挺快啊,下来一定要自己去写一写盖塞的方法啊,今天必须得拿下是吧?诶达到什么程度呢?就是条件反射的那种程度哈,不用过脑子就直接就咔咔咔的是吧。哎,得熟啊,哪个有参数,哪个有返回值,哪个没有,哪个有参数,哪个没参数,这个得整清楚。好,这个完了以后,接下来提供构造器啊。
31:02
构造器的话呢,我们通常啊,习惯上呢,在呃,给一个类呢,提供过道器的时候,我们一般都会写一个空餐构造器啊。啊,先给一个,然后呢我们再来。Tri angle。哎,Double型的base是吧,Double型的hat这呢,我就把这两个都给它初始化了。H啊行,其他的构造器我就不提供了,你说我还想写一个只有底边长啊,只有高的也行。啊,这个我就点点点了。哎,彼此之间构成重载啊。好了OK了啊,然后在另外一个类中呢,我们就做测试了啊,这个类其实诶还没完事呢,有个这个是吧。啊,求面积的啊。下一个。求面积。的方法。哎,这个呢,我们就直接返回吧,Double。Find area。现在应该有感觉了,这个方法呢,不要有行参了啊。因为呢,你调离方法呢,这个调离方法呢,是一个三角形,这个三角形呢,就有底边长和高啊,你就在这里边去用一下它的底边长和高就行。
32:09
啊,D乘以。高。除以二,哎,把这个呢,哎,返回一下。这个你就别问我为啥了吧。常识了是吧?完事了啊,然后接着我们去做这个测试。That tree。An angle的一个test。哎,没方法。诶,首先啊,创建实例。哎,它的一个实例啊,好声明啊,纯阳狗啊,这个呢,我们叫T1吧,哎,另外一个啊,阳狗啊,这呢,因为我们提供这个空仓的构造器了啊。诶,所以这块呢,我就直接呢,还是这样写的是没问题的,诶但是你注意此时呢,它的属性呢。都是默认值了,所以呢,你通过T1呢,咱们去求面积。啊,在这写一下啊。
33:00
面积。喂。啊,那这时候呢,我们这个底边长和高都是零。所以这块你看它就是零。好,那么在求面积之前呢,我们可以通过调用方法的方式啊,因为此时这个属性呢,已经被私有化了啊,不能直接掉了,体现了封装性了,好,我们可以呢去调赛的方法。设置一下它的高,比如2.3。哎,塞了一下他的贝斯啊,3.4。给了这两只以后呢,我们通过方法呢,这不这不就给这个属性都附上值了。哎,进而啊,你再调这个求面积呢,就是用的你这俩数。点一下这时候就可以啊,这还是有这个精度的问题是吧。好了,这个呢,精度这个事儿呢,咱们说本身就存在的啊。啊,精度的问题,这呢是一个例子啦,然后呢,我们再去创建它的一个实例。哎,这个呢,叫实例二了啊好,那么这时候呢,我就用另外的一个诶构造去去体会一下啊,用一个啊tree angle,我直接呢,在这里边就可以把它附上是吧。
34:08
前面这个呢是底边长,这个是高。诶,敷上完以后的话呢,咱们也可以呢,你去看一眼啊,去get一下它的底边长。啊,以及呢,它的这个高。哎,在这你可以写一下。底边长。长为。哎,这个A高纬是吧。这样啊行,那对应的这个面积的话呢,也没问题啊find。哎,这样求实面积。哎,这样就可以了啊。好,那这时候呢,我们通过构造器的方式呢,给这个对象它的属性附上值了,进而呢,你盖的时候呢,就有这个值。你看你看就是这个值,这个是2.44.54.5啊面积就拿它俩呢相乘再除以二得到的。
35:05
没问题啊,行这块都清楚吧。清楚啊好,那么讲完这个构造器以后呢,后边我们再去创建一个类的时候呢,诶这时候我们就可以考虑呢,显示的把这个构造器呢,给它声明出来了,而且呢,还可以写多个啊构成重载。仍然是我们前两个这个例子。然后呢,课后练习题呢,咱们昨天是讲了两个,还差最后一个,那我们来看一看这个第三个题目啊好把这个题目需求呢,我们打开。好看一看啊,说呢写一个啊count叫类模拟账户啊,该类的属性方法如下啊,这块呢写的都比较清楚一些啊,然后接下来呢,我们去创建叫customer类客户啊,然后客户这个类里边呢,他声明有几个属性啊,关于这个客户的这个姓名啊,然后呢,还有一个账户。诶,这块的话呢,我们这个客户的话呢,只有一个账户,那后期呢,其实我们还可以设计的更复杂一点,做一个客户的话呢,可以有多个账户,现在呢,可以声明抗的类型的数组,OK啊好,那么下边的话呢,就是相应的一些构造器呀,呃,一些盖塞方法呀,体现的就是我们这个封装性的这样的一个特征啊,下边就具体的测试了。
36:15
OK啊,诶大家下来呢,其实呢,可以写一写这样的这个基本的题目,OK啊。好,那么接下来的话呢,我们就按照这个顺序呢去来做这个设计,首先呢是关于这个count,诶这里边呢,也提供了这样的一个图示,呃,大家呢,你看着这个图示呢,去设计呢,也是OK的啊,我们比如说就看着这个图来设计啊好在我们ES23里边呢,首先啊新建一个count。哎,这个就是账户的意思啊OK。好,那这块呢,我们就设计属性来构造器方法,哎这块我们就依次呢来去做编写了,哎,首先啊,我们就写这个属性啊,In特型的ID这个呢叫账号啊。类型的。Double类型的叫balance,哎,这个呢,我们叫余额。哎,这个啊,这个余额的话,你叫balance就行了,以前有同学呢,这个自己设计个账户的时候呢,这个余额来一个余额是吧。
37:07
啊,我第一反应说乐是吧,对,你就别写拼音啊。诶,昨天那个中午分享的时候呢,对,还没说呢,昨天中午分享的时候呢,你写的那个。定义的那个变量是吧?那写成一个偶像的名,那那也不行哈,那更抽象是吧?还不如写拼音呢,啊啊,对,那完全不知道是什么意思了是吧?你要说这个程序员埋了一个彩蛋,那那倒可以是吧?呃,有时候我们经常看到程序里边会买一些彩蛋啊。好,然后呢,Private w型的这个呢,叫年利率啊annual。In。是吧,瑞就是这个呢,呃,你写这个这个标识符的时候呢,他如果给你现成了这个,你就照着他这个写就行了,但是你写的时候一定小心一点啊。诶往往的话呢,大家一开始定一个类名的时候,比如说变量名的时候呢,甚至说方法名的时候,呃,就是知道呢,建名之意,既然写的时候呢,把这个单词给写错了,呃难免有时候会看到啊,这个写错的时候呢,你记得第一时间给它改了,否则的话呢,你像当你后期在各个包里边去使用它的时候呢,那就恶心了。
38:11
那后边呢,发现这个给写错了,那改起来呢,可是得一点点去调了是吧,或者你到时候可以通篇的去搜索,搜索完了一次性去替换,当然也OK,但是你又怕万一呢,哪个位置呢,没给你搜索到,替换的时候出现问题了,甚至说在一些文件当中配置了。就很闹腾啊,所以这块一开始写这种变量名的时候呢,你小心一点,写完之后你稍微搂一眼看看啊,没啥问题,OK,那就可以了。这个呢,我们叫年利率啊。好,这呢是我们这个属性啊,下边的话我们就先提供一下这个构造器了,诶构造器里边呢,针对这三个属性呢,做了一个初始化啊public。哎,Account类型的,呃,这里边呢,分别的啊,就按照我们这个顺序就来了啊呃,首先呢,是int型的一个I啊,Double型的一个B,哎,Double型的一个。
39:03
A是吧,哎,这个我们就这样来声明的啊好,这里边呢,我们就ID拿这个I呢去啊balance。Balance。哎,拿我这个B呢去付啊,Annual interest rate annual就是每年的意思啊,Interest利率啊,Interest rate。然后A是吧。好过到现在完事了,接下来的话呢,这里边儿就提到了相关的get和set方法啊,一共呢是六个,相当于呢,就体现我们这个封装性的一个特点了。三个属性呢,我们已经私有化了,不能够在内的外面呢直接访问,那我们可以通过方法来去做这个事儿了。哎,昨天呢,我们讲的这个封装性啊,大家下来呢,应该是多写一写了。啊,塞了一个ID啊,一个A。ID拿这个I呢去赋值。诶,返回的是一个int类型的,Get一个ID。ID。Avoid啊,一个balance。B。
40:00
嗯,Balance,哎,拿这个B呢做初始化。嗯,这是一个double啊,哎,钙的一个balance。A return balance。好的啊,Avoid,一个interest rate double类型的A。A,初始化啊,好,返回一个W类型side,一个an,嗯,Get一个an interest rate。一个any interest rate。OK好啊,Ctrl al加个L啊这呢,我们整个把代码呢格式化一下啊呃,那相应的概算方法结束了,最后呢,有两个比较重要的方法,关于账户的叫存钱取钱啊,相当于呢,通过两个方法呢,我们去操作这个余额。OK啊,行。下边我们就编写啊,首先public啊,这叫avoid with JO,诶这个方法啊,这个方法呢,参数呢是一个double型的叫amount。
41:01
OK,这些方法呢,哎,我们说呢,叫取钱的操作啊。诶,这是它了,好,那么取钱的话呢,就是在我们现有的balance基础上呢,去减这个amount了,当然最好我们做一个判断是吧。哎,如果呢,这个mount呢,它是小于等于诶balance的,那说明这个余额够,诶那我们这呢,就做一个冲减了,就啊诶诶CTRL一下,那先在我们把这个钱呢先。先给大家讲了啊c al加一个回车就跑这了啊啊首先呢是balance呢,减等于这个amount。那这个呢,就相当于把这个钱呢,就讲了,讲完以后的话呢,呃,这里边呢,我们可以考虑呢,就说呢,输出一句话啊,比如说你这个取款成功了,这样个操作啊,这个的话呢,你可以参照一下我们这个题目的这个需求,最后他有个测试,测试的时候呢,他这个话就提到了,说成功取出多少钱。诶,然后呢,要钱不够呢,叫余额不足,取款失败。啊这呢,我们就诶相当于是参考一下,他最后呢,打印的这个效果,回过来呢,我们去呃设置的这个位置啊,所以这块呢,是取款成功的情况,所以我们叫呃成功。
42:06
呃,成功取出是吧,哎,冒号加上一下这个叫amount。诶这样就可以了啊好,然后这块呢,我们写个else else呢就是这个余额不足啊,这样的一个场景啊。呃,取款失败诶就可以了啊行这个呢,就我们说这个取款的这个操作了,好这个结束以后呢,我们接着再看这个存钱的这个事儿。在这啊,诶public,呃,这呢也是个word啊,叫Apple sit啊叫他了啊,然后呢,参数的表达意思呢,就是我们要存的这个具体的钱数了。诶,存在这个钱的话呢,正常来讲是没有什么限制的,呃,但是你说我加一个啊,就是你这个mon怎么也得是个正数是吧?诶这个也可以哈,说monta呢得大于零。诶,在这个情况下呢,我们在现有的balance基础上呢,就要加等于哎,咱们这个amount。哎,这样就可以了是吧,哎,这个呢,我们叫成功存入啊。
43:03
哎,多少钱哎加上你这个哎amount哎这样呢就可以了,所呢,如果你这个amount是一个小点零呢,小零呢,我就当让这个操作就默默的结束就完了,所以我也不写else了。啊,这呢是大于零啊,哎,同学说这块是不是也应该加一个呀,比如我这个妈我写个负五。负五的话呢,目前其实也限制不住是吧。负五小于等于,比如说1000块钱是不是也能进去啊。对,你说我这块想严密一点,那就再给他也加上一个也行是吧,诶让这个猫呢,是不也得大于零。OK的是吧,诶他写这个复数的话呢,这块我就都叫余额不足,取款失败了,你说我这块我再严密一点说加else if说你这个输入的数据非法也行啊,这个就是一些细节问题了啊,这个你可以把它呢,哎变得更细致一些,这个我就先暂时就这样来处理了啊。好,那么关于的话呢,我们就写成这样。哎,写成这样了,这个呢叫存款啊。
44:00
存款。OK。好,那这个完了以后啊,接下来我们再稍微看一下这个需求。哎,需求呢,接下来呃,我们说呢,去创建这个customer这个类了啊,对应的属性啊方法呀,是吧,构造器啊这块都有说明,或者呢呢,大家直接参照一下我们这个给好的这样一个诶格式啊。OK啊,在这里边儿呢,我们去右键啊,新建一个叫customer。诶就它了啊好,那首先的话呢,也是关于这个属性的一个设计啊,每一个客户啊,他有他的姓名,然后还有一个账户,那我们就设计一下华为的姓名的话呢,都是string类型啊first name。诶lastname好,诶private这个呢,我们以前呢,有过这样的一个经验了啊,所以呢,我们在这个类里边呢,可以声明另外一个类的,哎,这样的一个纯面料啊,另外这个类的话呢,可能是系统提供现成的像string一样也可以呢,是你自定义的类的这样一个属性。咱们前面呢讲,呃,最基本练习的时候呢,做过哈,这呢是employee类型的。
45:04
这个呢,每个员工都有一个自己的生日。啊,是一个卖date类型的。是吧,稍微的再熟悉熟悉啊,这呢是完全可以的啊,只不过它是我们自定义类的这样一个属性而已啊好,接下来的话,我们这个构造器针对于这个性命啊进行一个初始化,那它呢就不初始化了。啊,Public。Customer s针形的F是吧,S针形的L。哎,Firstname,哎,好,然后lastname,诶这就可以了。哎,就针对这两个做初始化啊,哎,那这个呢,变量的话呢,我们在创建对象的时候呢,其实并没有给它做一个赋值,哎,所以这个值呢是一个no是吧?哎,那么接下来的话呢,我们可以在相关的方法当中,对这个属性呢做一个赋值,所以你会看到下边有这个set方法。行,那我们这一章最后的话呢,咱们也会去总结一下,说针对于类当中的这个呈现变量,呃,在哪些位置呢,能够去赋值,以及呢,赋值的先后顺序。
46:05
嗯,OK啊,咱们现在呢,先呃做了这个练习,然后我们一会儿呢,说这个事儿啊好,那么下面的话呢,我们看到针对于这几个属性呢,提供了一些呃概赛方法啊,那其中呢,针对这个姓名这块。那只有这个get方法。啊,只在这儿有get方法,呃,相当于呢,就是我们在诶给这个属性设置成私有化以后,没有说呢,非得是把这个属性的get和SET2个方向呢,全都给提供,那如果说呢,一旦你设置好以后呢,我就不让你去改名了。那我就不给你提供赛的方法。哎,注意啊,这呢是一个小细节点了,所以这里边儿我们只有关于姓名的get操作。词类型,Get firstname。哎,这样I return一下这个firstname。哎,死人类型的啊,Get一个lastname。诶,Return一下我们这个,诶lastname,诶这就可以了啊,然后针对于咱们这个account来讲的话呢,我们是两个方向呢,都得提供一下了。
47:03
Public。哎,这是一个。诶啊对对着呢啊,Avoid先来一个set吧。Account。哎,先这样。好,这个account就拿我们这个A呢去做一个赋值。哎,再接着呢,去提供一个钙的方法。哎,Return一下我们这个account OK啊行这块没啥问题吧。嗯,OK啊,这块比较清楚一点,行,那这个大家下来呢,就相当于我们刚才写的account也好,Customer也好,这都算是比较标准的,哎,咱们设计这个类的这些写法了啊,诶该私有化,属性私有化,该提供盖塞方法提供啊,包括构造器,OK啊,诶大家现在呢,把它当成最基本的这种模板代码一样啊,多去写一写。好,那这呢,咱们关于这个customer这个类呢,这也就设计完成了。嗯,回到我们这个题目的需求这块。行这个呢就结束了,然后接下来的话呢,我们看这个具体的测试了,说呢创建customer来叫什么名啊,相关的这个信息是吧?哎,我们把这个事呢,CTRLC一下。
48:07
那这块我们去新建一个测试类啊,Customer它的一个测试。哎,这样啊,好,把这个具体的描述呢,咱们放到这儿。往后移一下啊。好,这呢,首先啊,我们写一个没方法进来。好,创建一个customer,名字呢叫JA Smith是吧?诶有一个账号啊,余额是多少年利率是多少,诶这呢就是这个账号的信息了。好,那么首先的话呢,我们去创建这个customer这个实例啊。哎,这个实例,哎这呢,我们就直接啊,使用咱们创建的唯一的啊构造器。哎,你有一个customer。好,那这时候的话呢,它就提示了我们这个参数了,昨天咱们也提到了啊说如果呢,你这个光标呢,给拿出来了,你再放回去,它就不给你提示了,这时候你可以CTRLP一下。
49:02
就正我显示啊,Firstname lastname啊叫Jane Smith。哎,你就按照他这个要求这块我们去写就行啊。哎,密是吧,哎,这就可以了。好没问题啊好,这个完了以后呢,接下来哎,我们考虑到啊,通过构造器呢,我们可以针对类中的这个,呃,对象的属性啊,做一个赋值,把这俩赋值了,现在呢,这个是没有值的。啊,没有值的话呢,我们就可以考虑呢,通过赛的方法呢,去做一个赋值,在赋值之前呢,我们先把这个账户呢,先创建出来。诶,你有一个count这就可以了啊,然后count呢,是我们创建这个类呢提供的构造器了,诶我们这构造器长什么样来着,记不清了,记不清呢,你也不用去翻那个count啊,CTRLP。哦,我们提供了三个参数,他如果要有重载的话呢,这块也同样的会给你。并列的显示出来啊好依次的话呢,提到了一个账号啊,这是1000余额2000,这个利率零百分之一点二三哈,那就0.0。
50:02
123。哎,这样呢,去写就行了啊。好了,那么目前的话呢,咱们这个客户和这个账户他俩现在有关系吗。没有是吧,对啊,这块如果我们画这个内存结构图的话呢,就是这是咱们的这个栈,这是咱们这个堆啊,这儿呢,是在main方法当中声明的局部变量了啊,所以这呢有一个叫customer,指向了你对空间里边你new的这个客户啊,这呢有一个叫count,指向了对空间里边用的这个账户。哎,目前他俩一点关系都没有,哎,那我们需要呢,让他俩建立关系。哎,那就是在我们这个客户这里边呢,有一个叫诶first name啊last name,还有一个叫count,诶我需要呢,把这个account那个值是不是复制拿你这个地址来附啊。哎,敷完以后的话呢,这样我就不也指向你了吗。相当于呢,就是我这个客户呢,我有一个账户啊,我这个账户呢,就是这个账户了,这个呢,你可以理解成就是银行给你开的这个户。啊,开的这个户呢,把这个地址呢,就是附到你这个账户的客户的这个属性下就可以了,是吧,那这个操作怎么做呢。
51:04
哎,对,通过这个set account是不是就可以了。哎,这样就行。这个可以了是吧,好这样的话呢,我们就让这个客户和这个账户啊,就建立了联系。诶就建立这个联系了啊好,那这个呢,我们就写成这样了,然后接下来那这块提到了对这个JA Smith呢,进行这个相关的操作了,所以呢,往他的账户里边,诶存入100块钱,再取960,再取2000,诶看一下这样的一个基本情况。呃,这呢,我们是针对于。诶,客户的。诶账户啊进行啊,这个取钱存钱的这个一系列的这个操作了啊好,那么这个操作的话呢,嗯,建议大家呢,你就不要直接拿这个count去呃,存钱取钱了。这个叫取钱,这个叫存钱是吧,诶建议呢,就别这样去操作了。比如说这块呢,你看先举个例子啊,既然提到了说存100。
52:01
你看我这样写的是吧,哎,接着呢,我们这个看的点,我叫微照呢,取960。这样写啊,接着再取2000。哎,就成这样了是吧,哎建议的话呢,你不要通过这个count去操作。哎,这个有点像呢,就银行给你开的户,相当银行的给你这块去做这个操作了是吧,现在要体现是不是你自己去操作的。那怎么办?对,你可以这样是吧,先拿着这个客户。诶,我先点呢,找到你的账户是吧,诶拿着账户呢,我们再去存钱。哎,这个操作呢,你看是可以连续操作的。哎,下边也同样的道理啊,诶拿着我们这个客户找到你的账户,然后再去伪造。哎,下边一样的道理。诶,客户找到get account,找到你的账户,然后再去伪造。那这样呢,就OK了啊。好,这呢,就是我们一系列的操作,哎,我们也可以暂时呢,先去run一下看看效果。好,那么这呢,就我们看到这个效果跟题目的需求,哎,这你看是一样的,哎。
53:04
没问题啊好,那么最后的话呢,他要求我们输入这样,呃,一个客户的这个信息了,呃,这个客户信息。在这写啊,输出客户的呃信息啊,这个信息呢,我们把它粘过来,稍微有点长啊。哎,长这样了。好,那这个的话呢,我们就自己在这儿去拼一下吧,哎,后期呢,你把它封装成这个方法也是OK的啊啊直接我们就打印了,哎首先啊字符串。哎,Customer哎这样一个中括号啊。这呢,我们直接呢是customer这个对象点get它的分。这个先是lastname是吧。这是小细节了哈,他不叫j Smith吗?先写Smith了是吧,小细节啊。好,逗号一下,然后在这块customer.get一个first。嗯,有点长了,咱们再接着。跨行是吧。这个呢,接着这样啊,一个中括号。然后呢,Has?
54:02
嗯,像这个呢,没什么技术含量啊,这就是你得小心一点就行。ID is空格加上哎,customer.get can.get一个ID啊,这样啊。逗号。嗯,再换航一下这个逗号啊,逗号其实你在这可以就接着写了啊,Annual interest rate is啊到这儿啊,CTRLC。在这儿。Is,然后到这儿了。这个呢,就是点get can'点get。Interest这块呢,我们是一个0.0123,它写成1.23。对,这个我们再给大家去乘一个100是吧。诶,然后这块你把这百分号给大家补充上啊,这个优先级呢,稍微要高一些啊,所以他会先计算这个数啊,然后在这呢再逗号一下啊说balance。Is啊,然后这块我们再去加上一个点get.get一个。
55:00
行,这应该就差不多了。稍微有点长啊这块。好,这个完了以后呢,我们这块呢,做一个run还是看这个情况啊。好看,跟他这块要求的一样,不一样,Customer Smith has account ID is interest balance没啥问题是吧?哎,这样就可以了啊好,这呢,就是我们说的这道题目。啊,就结束了。好,这道题目结束以后呢,诶在这个位置呢,借着它,哎,我再说一个小的知识点,这个知识点呢,其实也非常的简单,哎,叫做匿名对象。诶,这个那是我们首次听说这个名是吧?好大家看这儿哈,说呢,我创建了一个客户,呃账户,这个账户呢,我们有个名字就叫做account了,然后把这个名字或者说呢,这是一个变量了,哎,复制到我们这个count这个customer这个属性的位置,这两行代码呢,你看我想把它俩给注释掉,我这样来写哈。我就直接呢换成一行了,叫set一个account,然后这个位置的话呢,你看这个account呢,其实它就是附到这个值,然后把它那扔到这儿了,我就直接呢,把这一行代码CTRLC我就扔到这儿了。
56:10
你看是不是也可以。哎,或者可以这样写,那么这个写法里边呢,我们这new account,这相当于是创建一个堆空间中的对象,那这个对象呢,是不是没有名啊。哎,那这个名没有名的这样一个对象,我们就称为呢,叫匿名对象。匿名信。是吧?诶你想举报谁是吧?诶写了一封信,然后没写你的名,这叫匿名信了啊匿名对象就是创建的这个对象呢,没有名,诶这叫做匿名对象,诶就这样写。啊,平时开发中我们要用的话呢,其实也就是这样用啊。OK,那这个匿名对象呢,稍微的我们再呃多说两句哈,哎,这个我们就写到这儿吧,哎,这个关于啊匿名对象啊。OK啊,这个逆位对象的话呢,抛开这道问题来说啊,我把它呢,诶放粘一下啊,我就放到最后这吧。
57:04
诶跟上面这题呢,目前注意啊,是没有关系了啊好大,你看这个匿名对象的话呢,如果我这块啊,我就扭了一个count,这里边呢,需要给它附几个属性值,比如我就写个1001这个2000块钱。然后这个呢,是它的利率啊0.0,比如123还是这个事儿啊好这呢是这个账户了哈,这个账户的话呢,比如说后边呢,我来一个叫微兆,这就取钱了吗。我取1000块钱。哎,那我们现在如果要是打印的话呢,你看我run一下啊。哎,是不是这块就要成功取出1000块钱了。这个能理解吧。没问题吧?好,那么接下来的话呢,我说诶,我想看一下我这个账户的余额是多少。怎么着怎么着。人家说诶那那那就这么着,再把它呢,CTRLC一下拿过来,然后我们去get一个balance,诶去打印一下,这样行不。对,这就不对了。
58:01
你看这时候成了余额,是不是成了2000了。哎,想强调的问题是什么呀,就是哎,你看我们这个位置呢,去造了一个count的对象,这个对象呢,没有名。没有名的话呢,我们去调了一个方法,你下边呢,还想拿到这个对象,有机会吗?对,没有机会了。对,说白了就是说我们这样的这种场景啊,你这个对象呢,就只能用这一次了是吧。你再想拿到这个对象说看下余额呢,不好意思不行,因为呢,我们在Java里边,咱们去调用一个对象也好,还调一个呃变量,你所保存一个值也好,咱们都是通过变量名来去调的嘛。是吧,那你就好比是我们这块呢,说一个number呢,这个是十,我现在想拿到这个十,咱们是不是通过number来表示的是吧。对啊,这个account也一样,诶原来的时候呢,我们都是,诶把这个account呢,赋给一个具体的变量了,然后你想用这个对象呢,我们就拿这个变量来去操作,诶你想看一下这个ID,那我们就get ID,哎,你想看这个余额,我们就get balance,哎,通过这个对象名,哎,我们去找,但现在你叫匿名了吗?那匿名的话呢,如果你要这样写,那就不好意思了,只能调一次,下边呢,相当于是又创建了一个新的对象是吧。
59:13
所以就不行了。啊,那要这样说,大家可能会觉得说那匿名对象好像没啥用是吧,就用这一次是吧。哎,怎么用啊,哎,咱不是说了开发中呢,我们经常这样用。嗯,你看我们造好的这个对象,然后付给这个变量,把变量附到这儿,实际上的话呢,我们这个account不就指向了是你这个吗。而这个看呢,是不是有个名,我们后边还真没用它。哎,那干脆呢,我就写成个匿名得了。诶,所以咱们开发中用匿名对象呢,诶一般呢也都会这样用哈,所以呢,我们现在需要传一个对象呢,这个对象呢,我就直接拗好,直接给你往里一放就行了,所以呢,经常匿名对象作为啊,咱们这个食参是吧,传递给方法的这个行参证。啊,这个呢,就是它的一个,呃,主要的一个使用哈,两个点大家注意一下,第一个呢,就是匿名对象呢,呃,这个。
60:01
哎,往往是吧。哎,只能被啊调用一次啊。哎,这个呢,就咱们下边说的这个事情啊,然后第二个问题呢,就刚才我们提到了说这个匿名对象。啊,匿名对象是吧,常常哎作为食参,哎,传递给方法的这个行参。哎,相当于呢,是做一个赋值OK。就可以了,哎,那么实际上呢,在我们这个,诶在这儿是吧,呃,在我们这个赛德count里边哈。大家你再去细考虑一下,在这个方法里边我们点进去了,哎这儿呢,里边我针对这个A,你其实是可以多次调用的是吧。我去get balance了呀,这个呃,这个封起来啊,A点我再with照啊,这个时候是可以的啊,因为呢,你所谓的匿名对象传进来以后呢,到我这儿是不是就有名了。对,我在里边呢,可以多次调用,诶这个小细节关注一下就行啊,其实不太难。这个呢,就咱们关于这个,呃,第三道这个题目啊,这块呢,大家考虑一下构造器,包括我们封装性是合在一起的一个体现,OK。
我来说两句