00:00
好,那上午的话呢,最后咱们是把这个这次关键字呢就说清楚了啊,然后呢,接着我们来看一看这个课后的这个练习题,诶首先呢,我们来看这个第一道问题啊,这道问题呢,我们对应的是有两个这个图啊,通过这两个图呢,我们去写这样的这个例子了,OK,好这呢我就放到这了,这里边呢,我们涉及到有两个类啊,一个呢叫boy,一个呢叫go,好,首先呢我们去创建这两个类。现在是一个boy的类啊,我把这两个类呢,就都先写出来吧,OK啊啊,首先呢,我们来看这个报这类A里边呢,声明了两个属性啊,这个通过这个短横线呢,来表示它的这个权限修饰符啊,这个就是私有的这个结构了。好,这块呢,比较清楚了,诶private。哎,死类型的啊,这个叫name啊,Private啊,Int类型的,这个我们叫age。啊,其实这块呢,我们写了好多类似的这种代码啊,大家呢,其实也能发现呢,整体的一个套路呢,其实都比较接近啊,诶那我们这个项目呢,以后呃,会这个代码量比较大一些啊,其实呢,你去细看呢,整体上来讲也就是这样类似的一些逻辑啊,所以呢,我们写完这个项目,写完这个练习之后呢,诶,我们这个接下来呢,这个艾特贵502呢,就讲一个对应的这个项目了。
01:08
OK啊行,这呢是我们声明了这样两个属性,然后接下来的话呢,呃,提供对应的get和set方法。啊,那么咱们讲了这个这次关键字了,这块我就直接自动生成了啊这个快捷键呢,叫out加insert啊,这个有的同学呢,这个insert呢,它可能跟FN呢是结合在一起的,所以你可能需要配合上FN啊去使用。哎,然后呢,调出来这样的一个啊对话框,然后我们现在呢,想生成这两个属性的get和set啊,所以呢就选这个,如果呢,你只想生成get就选这个,只想生成set呢就选这个啊好,我就点这个了,然后呢,你这个按住CTRL键是吧,把这两个呢都选中OK一下。那这样的话呢,这个盖塞方法就生成了。啊,那么前两天的话呢,我们说让大家呢,扔到前两天了啊,我们昨天刚讲的这个封装型是吧,这个大家呢自己去写啊,然后呢,以后的话呢,都写的比较熟了啊,以至于说你自己想写概算呢,都有点想吐了是吧?哎这块呢,你就哎直接生成就得了啊哎,没必要我们再去把时间花到这样的代码上。
02:09
哎,这呢还提到构造器的问题哈,没有写,那我们呢,也声明一个构造器呢,同样的啊out加insert,哎,第一个位置呢,Constructor这有构造器了,哎如果呢,我们想创建一个空散的构造器,你把这个呃选中呢,点到这儿啊,然后点OK,这样呢就生成了。好,那这块我们再来一个啊,Alt加insert,我们去生成这个带参的构造器,比如说两个参数啊,按住CTRL键,把这两个都选中。啊,这个呢,在咱们买idea里边呢,可能还没有这么智能,什么意思啊,就是比如说啊,我这块我先点的A,我后点的name。这块你发现的生成的这个构造器呢,还是先内后位。哎,这个呢,是跟你声明属性的顺序是有关系的。啊,这个注意一下啊,呃,这块呢,呃,我们说这个有一个叫安卓死是吧。就是开发安卓应用的啊,这个安卓studio呢,是基于idea的那个社区版啊,这个开发的一个开发安卓的一个应用啊,还一个工具了,然后他这块呢,安卓studio里边呢,如果说你想生成构造器,就像刚才我说的这样的场景一样。
03:08
哎,就像这样啊,就是你先选谁啊,再选谁,它生成的构造器呢,就长这样。比他那稍微这样一个小细节是吧,好一点点啊。好,这个呢是我们说生成的这个构造器的问题了,然后接下来的话呢,还有两个方法,一个呢叫marry,一个呢叫做shot。好,我们来看这个啊,Public world,哎,Mary,这个就是要娶一个女孩是吧?哎,这呢就是个勾啊好,那么在这里边呢,他就想说一句话,说呢,哎,我想娶谁谁谁是吧。哎,想取谁谁这个位置的话呢,我们要写个这个勾的话呢,诶大家应该能想到啊,默认的话打印呢,相当于是个地址值了。诶这块呢,我们想我想取写了一串这个地址不太合适了,诶这个其实应该是写成这个女孩的名字是吧。哎,所以暂且的话呢,我们这块还没设计啊,我就先放到这儿吧。
04:00
啊,一会儿呢,咱们过来呢,去修改这个代码啊好,然后下边这个呢,有个叫SH啊。Public avoid啊,这有一个叫SH。上头呢就是诶喊一下是吧,喊什么呢?诶这个呢,根据他的年龄呢,我们做一个判断哈,说如果在你的年龄啊,比如说大于22岁了啊说呢就喊说可以结婚了啊哎,这个年龄的话呢,就是我们这个A值了。诶这呢,就相当于我们在这个方法里边呢,调这个属性啊,其实前面呢,像这些Z点呢,诶此时呢,都是可以省略掉的。哎,或者基本上我们写的时候呢,都会选择去省略啊。好,这个时候呢,我们说呢,说。哎,我哎,终于可以结婚了是吧。结婚了啊,现在年轻人呢,一般没有这么着急的是吧。好,这个呢,再来一个else啊。哎,这个呢,说。哎,我只能是。啊,哎,多谈恋爱了是吧。
05:03
好了,这个呢,就是我们做了这样的一个呃判断啊好这呢就是我们针对于这样的一个呃类呢,我们暂且呢就先设计成这样了,然后接着我们看这个叫go啊。这个呢,我们过来打开啊,这样一个类。哎,在这来写啊,哎,首先是private string类型的,哎,这个是个name啊,哎,Private in类型的,哎,这个是个age了。好对应呢,我们这块呢,还是先把这个构造器呢,比如说给大家生成一下啊,那接着来一个空参的啊,就长这样了啊啊接着呢,Alt加insert。啊来这个代餐的啊,内幕A呢,我们比如说都要啊,OK一下,你看这时候把我们自动生成的呢,它这个形态呢,跟我们这个属性名呢,都是一样的,来通过这次呢,来做个区分啊就可以了,然后接下来呢,针对于我们这个name,这有个get的方法,Age呢,这块没写没写咱们就按照人家的要求嘛,比如说不提供了啊,所以这块我们只选择这个name OK一下。好概率方法搞定。啊,这个代码要都这样写的话就特别爽是吧。
06:02
啊,这个开发当中啊,其实大家每天写的这个代码量呢,一般也不会太多哈,呃,两三百行。啊,差不多是吧,大家现在每天练习的话呢,呃,因为咱们在学习阶段啊,每天可能列的代码呢,会。会多呀,会少啊。重复性的,其实你不止写了两三百行是吧,诶在真正这个做业务的时候呢,其实这个代码每天呢,它就是重复性的就比较低一些了。啊,甚至有的时候呢,今天一天啥也没干啊,就调了一个bug是吧。哎,是有可能性的啊OK,诶,那当然我们写这代码呢,肯定不是说这么简单的,这种代码盖菜方法,一天就写几个类扎in就完了,是吧?诶,肯定不是的啊。OK,好,接下来我们在这有一个叫Mary的方法。哎,Public这个啊。哎,这个就别写够了。这个嫁给男孩是吧,好这块的话呢,我们在这里边说一句话啊,说哎,我想嫁给。嫁给谁谁啊这呢,我们就对应的是这个boy了,哎,这个咱们对应的叫get一个name这样啊,哎,那你写这块啊,回过来我们这个位置呢,也得调一下了。
07:09
那这个呢,我们应该是go.get个name啊,这样就可以了啊好,那这块的话呢,我们说这个女孩呢,想嫁给这个男孩。哎,那这边呢,比如我们加一个这样的需求。一般呢,不都说这个,呃,男追女合作山。啊,女追男。隔层纱是吧,哎,说这个女孩呢,想嫁给这个男孩,这个男孩呢,马上在这里边就有个回应,说我也想娶你。是吧,哎,这个时候直接呢,这个boy呢,在这里边呢,就也掉了一个marry的方法,那么问这个位置写什么。说这块呢,整一个匿名的一个对象。哎,反正呢,到时候不报错了。你看这样写行不行?你看调这个方法的是一个女孩对吧,这个女孩呢,她想诶这个这个嫁给这个男孩啊,她这块呢,就调这个方法了,说呢,我想嫁给谁谁这个男孩男孩的名字是吧,马上这个男孩就说说我也想娶你。
08:10
这个是不是成了另外的一个。够了是吧。对,相当于这儿呢是个女孩,她呢想呃,嫁给这个男孩,然后那个男孩呢,想娶另外一个是吧。哎,成这样了,哎不合适啊,那怎么表示呢,就是调这个方法的这个女孩呢。哎,对,这个位置呢,我们就可以写这了。这个别蒙啊,诶这个这次呢,我们叫当前对象,哎,调用迈方法的对象,调它的只能是一个go吗。啊,而且是一个对象了,所以说我这就可以放到这儿。哎,这个大家体会一下啊,OK。好,这个呢,就是我们说的这个场景,然后接下来啊,我们这儿呢,还有一个方法叫做compare啊。Compare呢,这个方法呢,它有一个返回值呢,是个int啊。Compare啊。诶是这样的啊,诶这个方法是什么意思呢?这个以后呢,我们讲这个对象呢,在这个比较大小的时候呢,其实就会遇到类似啊这样的这种方法啊,我就先把这个写上,这个方法呢,我们说呢叫哎比较呃两个。
09:13
哎,叫勾对象的大小啊,那么这个其实我这块我写成一个。文档注释呢,是不是更好一点是吧?哎,我这么着了啊好,那么这个勾呢,就是我们这个参数哈,这个呢,就是我们带比较的对象,所以这两条两个对象啊,哪俩对象呢,一个呢是调我们这个方法的对象。是一个勾啊,另外一个呢,就是我们这个行参这也是个勾,那就一共构成了这两个勾了啊好,那么这块呢,怎么算大,怎么算小呢?哎,我们就看这个返回值了,返回值呢,如果是一个正数呢,就表示当前。那这个对象大。哎,如果呢,是一个负数。啊,这就是我们这个,我就说这叫当前对象小。哎,当年就押小啊,说白了就是你这个行参啊,或者你说成这个行参。
10:03
咱们这个勾呢,它呢大是吧?啊如果呢,你要是零表示呢,它俩呢就是相等。OK啊行,哎这块呢,为什么会这样的去想呢?哎大家你看啊,咱们呢,呃,讲过基本数据类型啊,比如说这块呢,我们12啊这个呢是五啊说12大于五。哎,关于这种数值类的呢,其实都有大小指数,哎,关于对象啊,你比如我们这块呢,是一个勾的对象,这呢又是一个勾的对象,两个对象,你说谁大谁小啊。似乎对比不了是吧,哎,他这个你比如我们说这个站,这叫堆,然后站里边这块呢,我们就存着这个,比如这个,呃,这是一个勾扭来一个对象啊,又来一个勾啊又扭了对象,这两个对象谁大谁小,这说不出来呀,没有大小之说。你总不能说说这个地址大,这个地址小吧。这地址的话呢,其实你可以理解成就像随机分配的一样是吧,诶看哪块有空间,哎,我们就放下一个了。好,那但是我们这个实际的比较对象大小的这个需求啊,是存在的啊,诶比如说大家你想象一下咱们点的这个美团外卖是吧,或者你看的这个头条的新闻也好啊,诶这块呢,你看先列哪个商家,后列哪个商家,每一个这块的一个项item,其实我们都看作是一个对象了,那为啥你这个对象在上边,因为啥你在下边呢?
11:17
总得有个顺序是吧。你可能说离你远近好,离你远近的话呢,其实你可以理解成就像那个属性一样,它是不是按照这个属性给排序了是吧。对,你也可以呢,说按照他的这个,比如说评分啊,或者价格。对,那总之的话呢,我们对于这种对象排序的行为啊,是有需求的,那至于说呢,怎么排呢?呃,就像这里边儿,比如说呢,我们这个,呃,两个女孩是吧,哎,我们看他这个age。啊,如果呢,你当前对象的这个H呢大,我就认为你当前这个勾对象就大。哎,所以说呢,我们怎么去比较两个对象的大小呢,以后我们会去讲啊,其实呢,是比的两个对象的某一个属性的大小,而这个属性。
12:00
啊是像我们说整形一样啊,它是有大小之说的了,比如说他的年龄啊,这个年龄大啊,这个年龄小,我就说你这个对象大。哎,是这样一个情况啊好,那么在这里边呢,咱们就也拿这个年龄呢去比较了,诶你看这块怎么写哈,说呢,如果诶咱们当前的这个对象的age呢,大于你行参的这个对象的age。那我呢,就说你当前对象大,哎说呢就返回一个正数,那我就返回一得了。这样啊,好l if,如果当前这个对象的A呢,小于你行参这个对象的A值,哎,那我呢,就认为你这个行参的段大,我就返回是一个负负一,哎然后呢,这块我们写个else,哎,我就return了零。哎,这个看大家能看懂吧。哎,对啊,这个呢,就是我们后边啊,咱们讲到这个对象比较大小的时候呢,实际上呢,到时候的逻辑呢,跟这个逻辑呢是一样的,咱们暂且的话呢,你不用想那么多,哎你就呢知道我现在呢,呃需要呢跟行参做比较了,一个呢对象呢是当前对象,一个呢是行参的,呃当前对象,注意这时候我们就要用this来表示了。
13:02
哎,只需知道呢,现在我们熟悉是这次这个关键字就可以了啊。好,那么这样的话呢,咱们这两个类呢,就设计完成,接下来我们写这个具体的测试啊,哎,关于boy girl的一个test方法一进来。好,那么首先呢,我们去来创建一个,哎,比如说boy的一个对象啊,你有一个boy啊这样。大写的这个B啊,好,光标放这儿,CTRLP。哎,这块我们就知道呢,有两个构造器啊,咱们比如说用这个代餐的吧,诶这个boy的名字呢叫。嗯。这个。杰克,好,杰克儿。好,这个逗号啊,杰克呢,比如24岁啊,然后再来一个go。你有一个够啊。哎,这个我们来一个。肉丝啊,来个朱丽叶吧先。哎,让他们这个跨越一下时空是吧,20岁。
14:00
哎,这就可以了啊好,然后呢,这个诶,我们通过这个go咱们去调一下吧,第二哎,它有一个方法呢,叫做marry是吧。哎,我们拿去调了一个boy,诶,我把它呢放进去。哎,这个叫勾一啊,这样好,那么这时候呢,说这个女孩呢,她想嫁给这个男孩,里边呢,只有对应的输出了,你看我们这时候这输出的信息啊,能不能看得懂。诶,这个里边呢,他调的时候呢,这边这个女孩说我想嫁给杰克是吧,哎,杰克呢,马上说我也想娶你是吧?哎,这个Z的话呢,是由朱丽叶发起的,所以呢,诶他俩就在一起了是吧。哎,这不就这样吗?嗯,然后呢,这个我们boy这块呢,这不还有个方法呢,叫做方法。哎,这个我们调用一下。一下。哎,终于可以结婚了是吧?啊,因为他这个年龄呢是够的,哎这个呢就是调用,诶谁调这个方法,我这儿呢,就取这个对象的age啊杰克调的杰克呢,24岁了。哎,就这样个场景啊好,然后呢,我们再演示一下这个go呢,它有一个compare的方法啊,那这块我们还得再去创建一个。
15:02
哎,你有一个狗。啊,这个呢,我们这个呃,肉丝就来了是吧。呃,肉丝行肉丝吧,18岁是吧。好,然后呢,这时候我们就拿着这个A1。诶点诶我们呢,来一个叫compare啊,把这个勾二呢往这一放,诶这时候我们就返回一个int型的值了。啊,比如说我们这个呢,就印了一个叫compare吧。哎,得到这样一个结果啊,把这个结果的话呢,你可以呢,比如做一个判断啊,哎,如果呢,它要是大于零。哎,那就像你这个勾一呢,要大是吧,这个你可以输出一下啊,这个勾1.getname啊,它呢要大一些。然后I if。诶,Compare呢,要是小于零。哎,对呢,这个就是哎勾二。第2GET name它呢要哎大一些。Else。哎,他俩呢,就是一样打是吧,哎,我就简单了啊,简写了一样打。
16:02
好,那么这时候的话呢,如果我们去运行,咱们是把这个勾一呢放在这个前边了哈,把勾二呢放到这儿,这其实结果应该是谁呀谁的。勾一要大一些是吧,诶其实呢,我们就相当于拿着20呢,这不到里边去做判断,这个时候这个勾一呢,就冲到了我们这里边C拉。哎,他是20岁,诶大于你这个18岁是吧?诶所以返回的是个一,所以呢,我们这个就是,诶他大他呢是朱丽叶,所以朱丽叶大。哎,就这样。OK啊,诶大家呢,稍微的体会一下哎,通过这道题呢,我们主要呢,需要大家呃考虑的就是关于我们在呃类当中相应的方法里边,或者构造题当中,诶我们使用这种这次的场景。哎,构造器这块呢,似乎没有体现是吧。哎,构造器这块呢,其实诶你这块呢,诶这么着一下相当于出现了一个Z调构造器这样个场景啊,只不过呢,这时候咱们这里边儿也没有什么相关的代码了,所以这呢,你调不调呢,似乎也看不出来什么效果。啊,仅此而已啊。好,这个题目呢,我们就写到这儿了。
17:01
啊,这个咱们就关掉了啊。嗯,接着的话呢,咱们来看下边这道题。这道题呢,稍微的要大一些啊。来,我们看一看。说按照UML类图创建account类啊,提供必要的结构啊,有一个取钱有一个存钱的操作啊,就是对应的是我们这个结构了,好然后的话呢,我们又有一个叫customer,诶customer叫客户了,客户里边呢,它有对应的对应的这个账户啊,这块就账户的一个信息了,诶概赛方法行,然后呢,在这个基础上呢,我们又多了一个叫做bank啊。啊叫做银行,呃,银行呢,它里边呢,可以存储很多的客户,所以呢,我们在这个银行这个类里边呢,你发现呢,有一个叫诶对象数组是customer类型的数组。这块呢,还声明了一个变量叫number of customer,一会儿我们看看用它来干什么啊,哎,对于银行来讲呢,它有这样的方法说爱的customer。说呢,我把指定姓和名的这个人呢,封装为一个customer对象来放到我这个数组里边。这个方法呢,就是看看到底有几个客户了,哎,找到指定索引的客户,诶就是这样的一个功能啊。
18:04
来咱们写一写,首先呢,来写这个account。哎,先来处理它啊。盯一下,把它呢,稍微的放小一点。好在这儿啊。首先啊,声明。没问题啊,这个呢,就是我们说的这个叫账户类。哎,OK啊。好在这里边写了啊,Private类型的balance。哎,这个我们叫余额。诶没问题啊好,接下来的话呢,我们提供一个构造器,诶它这个构造器呢,它这个型材呢,叫这个名啊,那也不影响我们自动生成啊。哎,这个关于balance的,把这个名呢,你可以稍微的改一下,按照他这个要求改吧,Init。Balance,对啊,CTRLC,诶这样调一下啊。好,这就完事了啊,然后接下来呢,针对于我们这个,呃属性呢,提供了一个get方法,诶没有set方法啊好alt加insert。
19:01
只有一个get。哎,没问题,好了。诶下边呢,针对于我们这个,嗯,这个账户的话呢,我们可以存钱取钱,哎,那就是下边这两个功能啊,它这也没有说有返回值,那我们直接呢就写成word了。哎,先写一个,比如说存钱。Public avoid deposit。Double类型的一个amount。哎,这样好存钱,说判断一下啊,说如果呢,这个AMT呢是大于零的,哎,我们就存钱了啊balance。哎,加等于amount啊,哎,加完以后呢,这块你可以来个输出啊,说呢成功存入。哎,加上我们的amount,诶这就完事了啊好,如果呢,你这个要是写的是小点零的呢,我们就就默默结束了啊。我就这样了。好,下边呢叫取钱。诶public away的就我这块呢,就写简单了啊,正常来讲的话呢,大家在一个项目当中呢,这块建议都写成文档入释啊。
20:02
这个呢,Public我们叫withha。Double类型的amount。哎,这样啊,取钱,这就是你要取的这个钱数了,所以做判断,哎,如果呢,这个哎balance是大于等于amount的,哎,并且呢,这个也别写成复数了啊。好,这个呢,说明你这个余额够,我们就减等于这个amount了。哎,简短于这个毛啊。好,这个时候呢,我们再加个输出语句啊,说呢叫。诶,成功取出。哎,加上这个AMT就行。好,然后呢,你要是不满足这个的话呢,诶我们这儿写一个哈,说这个取款数额。呃,有误是吧,哎,货呢余额不足。哎,我这样呢,去诶显示一下诶你要小于零,那就属于有误的啊,你要是这个,诶钱不够呢,这个叫余额不足啊。
21:00
哎,是不是就可以了。哎,这是我们当前这样写法啊,好,那么在这两个方法里边呢,这个balance就是我们这个属性啊,这个我都没有加this调。哎,看作是一种省略啊就可以了。那接着的话呢,我们看下这个叫客户啊。关于他的。没盯上啊。这样盯一下啊。好,回过来啊,新建一个customer。哎,就他啊。好,Customer这个呢,我们叫客户类。诶,OK啊好,那这个类的话呢,我们看有三个属性啊private,哎,真的。First name。啊,这个呢,这个外国人跟咱们这个中国人的这个性格名呢不一样是吧。他这个位置放的叫明是吧。这个呢,它叫性啊。
22:00
啊,其实咱们现在呢,写的这个项目啊,大家基本上都是咱们国内去使用的啊,像这个比如说这个这个上个世纪90年代那会儿,比如199几年,200几年是吧,前后的这样时间,呃,咱们其实有好多项目呢,都是外包国外的项目啊,尤其呢,像那时候日本的经济还比较好,是吧?啊尤其像这个这个这个东北的大连啊,有个东软啊,东软呢是大量的外包日本的这种项目。现在呢,整个这个日本的经济呢,其实整个也都在下滑是吧,呃,对日开发的话呢,就会项目在变少。啊,当然另外一个层面呢,就是日本现在这个这个这个什么老龄化也很严重哈,呃,其实有好多,当然也有咱们的同学也有呢,呃,就也有认识那边的一些这个人哈,哎,我我有同学他们读完研究生啊,读博士的时候也过去了啊现在日本呢,其实特别缺这个高端人才。大家呢,以后都是高端人才是吧?啊,都是工程师啊,诶其实呢,日本现在挺缺这种年轻的,比如说做开发的这种的人的哈,就一方面呢,就是相较于以前来讲呢,上个世纪90年代,整个人的外包的项目变少了。
23:03
呃,另外一个呢,就是说他们现在国内的这个。其实人人才还是挺缺的啊,大家以后有兴趣呢,你想去日本也可以,待遇呢,其实比国内的肯定要高了哈。对,当然对,不会日语是吧。你可能看这些字呢,应该不受影响。是吧,诶但是呢,你要是想跟人交流的话呢,有点费劲啊。对,我想说什么意思呢?就是咱们写的这种项目。啊,一说到日本的话都比较兴奋是吧。啊。嗯。诶对,就是我想说的呢,就是咱们写的这种项目哈,你像这儿呢,叫吸引这个叫名以后的话呢,其实我们基本上这个项目都是给国内人写的啊,所以呢,你还是符合这种国内的这种习惯就可以了。我这就叫醒,这就叫名是吧,哎,我就是就是相当于不用这样的去表示了。OK啊。行啊,这个等疫情结束以后呢,我觉得大家以后也工作了啊,这个有时间的话呢,可以各个地方都走一走啊,日本的话我觉得可以去看一看的是吧。
24:01
诶,我我去过一次哈。对,特别巧,就在一九年的时候去的,二零年就去不了了,是吧,对,就是日本呢,就咱有一说一啊,整个这个国家的这种素质呢,还是还可以,就老百姓的这种素质还是还可以的啊,我就记得那时候我去他们那边那个这个这个药店里边买一些药嘛,是吧,他们那不是说一些药啊等等还还可以是吧,买些药之后呢,然后他本来呃,那一排都是药店,那选这家呢,感觉这家好像便宜点,但就他这家呢,他们满500块钱呢,别的家都减税。就免税了,他们家没有我也不知道,然后呢,就是结账的时候呢,就是他们很多岗位呢,这个这个服务员等等的啊,都是这个满头白发的这个老人啊,真的是。很多,包括那个交警啊,那比你年龄都大的多了是吧,都爷爷辈儿了啊,然后呢,那个老爷子满头白发就给我扫这个商品嘛,扫完之后的话呢,诶我意思说呢,诶这个没有减税,但是我俩沟通其实也挺费劲的是吧。
25:01
啊,我说英语,我说汉语肯定不行了啊,日语呢,我又不会是吧,诶我用英语说呢,他不是特别明白,但是呢,一会儿大概是清楚这意思了,你要咱们在国内的话呢,比如这种情况,人家的意思就是说我们不能免税。那咱们要在国内的话呢,我要想退,咱就会觉得挺不好意思的是吧,你看你你还给我扫了,我现在不想要了,咱会觉得挺惭愧的,但是你发现呢,在在那种场景下的那个老爷子哇,他突然就感觉到特别的内疚,他会觉得说没有提前把这个事儿跟你说清楚。啊,然后他就开始给我鞠躬,知道吧,啊,对,他就90度那种鞠躬,说这非常不好,就是也听不懂,但是你知道他在给你道歉,他一看我一看呢,有点懵了是吧,哪能受得了。长两辈的人给你这样的道歉法是吧,我也开始给他鞠躬是吧,你就看着两个人在这儿就是来回这样鞠躬了就是吧。对,就是,但是你能看到他那种是发自内心里,他觉得是真的很不好意思的那种感觉哈。对,这只是一个例子是吧。
26:03
对,然后呢,你会发现呢,日本人这个英语呢,确实也不太行啊,因为我们去的时候,我就跟我媳妇儿我俩去的这个就是去的东京嘛,就觉得东京应该开放程度也挺高的,我指的是这种语言层面的是吧。就是那块去的时候不太热哈,嗯,这个,但实际上你去发现呢,就发现他们能够能用英语交流的。还是比较少的。对,赶上11呢,以为说中国人都去呢,结果发现呢,我们去的时候也没看到中国人特别聚集的地方。啊是吧,嗯,所以说去的时候呢,还是需要有一些交互在里边的,拿这种语言翻译软件翻译的时候呢,发现他们也听不太明白哈,可能那个软件也还不太行,呃,所以呢,这个这个直观的一个感受就是什么呢?英语还是挺重要的啊,对于他们来讲挺重要,对于咱来讲也很重要,只要你出国了,那你可能就得需要考虑英语了。哎,所以大家以后呢。就咱们算这个这个这一代就就算是就这样了,是吧,大家呢,现在就学学编程,诶逼着你学学英语,等以后有孩子的时候呢,以后有条件了,你带着他出趟国。
27:08
啊,你让他呢,主动去跟外国人去交流,他真的交流不了,他会认识到,诶学习语言还是挺重要的。这种动力还是比较足的是吧。当然前提是呢,你得先能够。有这个对,有钱在家来回跑是吧,OK啊。好这个拉回来啊,这个咱们还接着看这个项目里边这个属性啊,这呢是两个了。啊,这块呢,我们还把它叫姓这个叫名了啊以后呢,呃,咱们说那个项目都是基本上国内来用的啊,所以符合国内的这种习惯就可以了。好,Private这个我们是一个account类型的一个account啊,这个就是我们的这个,呃,对于客户来讲呢,它的这个账户啊。嗯,没问题啊,那么接着的话呢,提供一个构造器啊,加上insert,哎,构造器只提供呢,关于姓和名的初始化点,OK,它这呢叫F这个角L,那咱们也改一下。
28:00
哎,就这A叫L。行,这就可以了啊好,下边这块呢,一定得改啊,不改的话虽然不报错,这是不是都是属性了。按住CTRL键都成属性了啊。哎,行,这就可以了。然后接着的话呢,针对于我们这个firstname和lastname呢,提供钙方法啊,这个你看清楚啊,只提供钙方法。质量。好OK一下,然后关于我们这个account呢,提供get和set。那在这。Out加insert啊,Get和set。嗯,OK,哎,这就可以了,好,这个类呢,我们就写完了。啊,其实好像也没写几行代码啊,全都是生成的啊,但是里边这个逻辑呢,你肯定是清晰的。然后接下来呢,我们再去呢,诶写一下这个bank啊。哎,这个题目呢,稍微的麻烦呢,就麻烦在bank这块了。哎,这个呢,我们叫银行类啊。哎,他啊。好,那这块呢,它有两个属性。
29:02
啊,这个叫customer类型的数组叫做customers。这个数组的话呢,我们说呢,是用于保存诶多个客户。这个很好理解啊,好,接下来我们还有一个呢,叫int类型的,哎,Number of。Customer。诶,这个属性呢,它的作用呢,是用于保存,哎,存储的,或者要用于记录吧。呃,用于记录呢,叫存储的客户的个数。哎,这个呢,你记清楚啊。那有同学可能会说,诶,这个客户的个数不就是数组的长度吗?怎么还单独去记录一下呢?其实跟速度的长度不一样是吧。啊,比如说啊,咱们呢,一会儿呢去,呃,这个提供这个数组初始化的时候呢,假如这个长度呢是十。数组的长度是十,但是呢,你有可能这个,呃,数组里边呢,是不是只存了三个客户啊。
30:02
对啊,那么这个三呢,就是用这个变量来刻画的。那跟这个十呢,不一定一样,所以只有你满的时候呢,他俩才一样啊。好,那么接下来的话呢,我们去提供啊,首先是一个构造器啊,这个比较简单,我就自己来了啊,啊构造器我们就先写成这样了,哎,接着的话呢,会有三个方法。哎,第一个啊。是一个wide的,叫做I,哎,Customer。哎,这里边儿呢,指明哎,死string类型的F啊,死string类型的一个L。哎,我这就先把这个方法呢,先声明好啊。第二的话呢,这个是in的类型,叫get number啊。A number of。Customers。哎,这样子啊。啊,这呢是我们这个方法返回值呢,是int类型。哎,没问题,好,接下来。Public customer get customer。啊,Int类型的index。
31:01
Int类型的index customer,诶行可以了啊好,那么接下来的话呢,我们就开始呢设计啊,比如说构造器,还有呢这几个方法了。呃,构造器里边呢,我们看能做什么事啊,这个一般的构造器当中,就是针对于当前类中的这个属性呢,做一些初始化了啊。嗯,这个呢,几个客户这个也不用初始化默认就是零。啊,那就零就行啊,然后这个呢,是不是可以初始化一下。对啊,意思就是这样的啊,比如说咱们呢,一会儿呢,不是得做测试嘛啊,比如我就叫他bank的test了。然后呢,在这儿呢,我们写个main方法。诶,我们上来呢,就诶扭了一个bank。哎,这呢,我们就调这个构造器了啊,哎,我希望呢,你在调这个构造器的时候呢,把这个数组呢,就给我们创建好。哎,所以呢,我们就可以把这个数组的赋值的操作呢,哎,我就写到这里边儿了。哎,这呢,比如我们就写个十吧。哎,就这样写了啊好,那么再换句话说呢,这儿呢,是我们这个类的一个属性。
32:00
咱们前面的讲过关于属性赋值的位置和先后顺序了啊,诶默认赋值显示赋值,诶构造器里边赋值啊,在这就通过这个盖塞赛方法啊赋值或者你直接调直接调呢,这是私有的不行了。哎,方法这块呢,咱们也没有提供说set这个的方法。哎,所以呢,你要么显示复制,要么就构造气体复制。啊,所以这块呢,就是呃,要么你这样写呢也行哈。是不是放这儿也行?啊对啊,我这儿呢,就没放这儿了啊,我就放到这个。哎,构造气质里边了啊。好,这是一个事儿啊,这个完了以后呢,这个属性啊,不用改啊零就行,因为一开始呢,你也没有存啊好接下来的话呢,我们看下边这个方法,这个呢叫爱的customer。哎,我们写一个文档注释啊。啊,说这个方法的作用呢,我们说呢,就是将。哎,指定。啊,这个姓名的客户啊,保存在。啊,这个银行的客户列表中。
33:03
诶,列表中啊,相当于呢,我们希望呢,诶,你把这个F和L为代表的一个呢,叫吸引一个叫名封装为一个客户对象,然后放在我们这个数组里边。哎,那想想这个事儿怎么做呀?对,你得先把这俩是不是封装成是一个客户啊。对,所以customer比我这个有cost了啊,因为一个customer。哎,在这个位置呢,我们CTRLP一下啊。哎,说这个参数呢,就这俩,哎正好呢,就是一个是呃,这个firstname啊,一个呢是这个lastname。那就他是吧,好,然后呢,我需要把这个对象呢,放到咱们的数组里边。怎么整?哎,这个数组的N,那放在角标哪个位置呢?啊对,这个大家有有同学呢,就想到了啊,哎,说这话用的是它是吧,哎这个怎么想呢,你看啊,这个第一次调它的时候呢,其实你得放到角标零的位置。
34:00
诶你第二次再掉的呢,就脚拌一的位置了是吧?诶第三次再掉呢,就脚拌二了,诶这个就依次递增了,诶说你这块呢血咱们也不能临时这块每次都改了,所以呢,我们希望呢,用一个变量呢来刻画这个事儿。诶正好呢,我们现在有一个变量呢,叫做它,哎,我这儿呢,第一次调的时候呢,它就是零。哎,正好呢,角标是零。呃,第二次再调的时候呢。我希望他是一是吧。哎,那希望21呢,那就他得是不是在你上次调用完以后呢,再加加一下。哎,当你第二次掉的时候呢,它不就变成一了吗。一加掉就变成二了啊,你自己三次掉小标正好是二。而且顺便呢,你会发现呢,你每掉一次,它就加加一次。我掉了两次加加过两次,它就是二,那相当于是顺便呢,他不就记录了这个事儿吗。就这样的思考是吧。这个呢,就咱们说的这个叫爱的这样的一个操作啊,诶这两行代码呢,如果你要是愿意的话呢,你也可以合并在一起。
35:02
怎么写?把加加写在里边,那是前加加还是后加加呢?对这块呢,就有讲究了啊,这个一定得后加加。哎,先呢,取出它的值是零啊,然后呢,你给角标零赋完值以后呢,它再加价。啊,你看我上边这个写法呢,我这个加加呢,你说我就想写这行不行。这个可以,因为你也没涉及到其他的运算广式加一了是吧,诶所以你上边这个无所谓哈,但是关键呢,就是你下边这个呢,一定要是写成后加加的。好,这个呢,就是添加的啊问题啊下面。啊,这个呢叫get number of customers啊,其实就相当于我们这个属性的一个get方法。啊,这个我们就直接啊,就return一下它就行,相当于呢,就来啊获取。啊,这个客户啊列表啊中啊客存储的。客户的个数。哎,这就可以了。
36:01
哎,这样就搞定啊好,下边这个。啊,这个呢,你一看这个方法名呢,大体上也能猜出来啊,这个我们叫获取指定索引位置上的客户是吧。OK啊,我就想找这个位置。那么首先问一个问题啊,这个index的这个有效范围应该是多少?比如说啊,这是角标零,这是角标九,然后我现在呢,存了仨,比如说啊,那么你觉得这个index的范围应该是多少到多少。是零到九还是零到二呢?对,零到二啊。哎,零到二就这块儿呢,就不要让他去取了,取了也没有用是吧,都是no吗。诶,所以这块呢,我们呃,写的话呢,你可以先就是依拉是吧。呃,你先写有效范围还是先写无效范围都行。都行啊,我要先写无效的话呢,我就这样了啊,如果呢,你小于零。或者。你大于。
37:02
等号,看要不要。等号是不是也可以要上?对,比如说你存了仨这个角标,其实最大是二是吧,所以你大于等于的时候,这个时候是不是就无效的是吧,那这个呢,暂且咱们就全都return吧。这样啊好,然后这个位置呢,就是else了,这个就是我们有效的范围啊,Customers标呢,就是index。哎,把这个呢,给它return一下。诶,是不是就可以了。好,然后呢,大家你看啊,我这个代码呢,我把它删了。我这样写是不是也行?诶体会一下啊,它能走到这儿肯定是没有执行这个if附与距离这个return是吧,诶所以这块呢,是一个签到结构呢,我这样一改的话呢,这个呢,就跟它是并列结构一样。所以呢,通过这样方式,你比如说啊,我这是一个if,哎这块有个else里边我又写了一个if else,哎,我通过刚才这样的一个方式呢,现在你把这个结构呢,不就并列着写了吗。
38:00
减少了一层嵌套,其实是吧。行,写完了啊,写完以后呢,回过来我们这块呢,来做这个具体的测试了。哎,刚才我们这个bank test呢。啊,在这儿呢啊。眼神儿不好了。好,那么这个bug呢,已经创建好了。然后接下来啊,我们可以通过半点叫I的customer。我就调查他啊,那写一个名写一个姓。啊写,比如说。张三,来点创意的。李思。哎,比如说这个这个。嗯,曹操是吧。这这这草还得写后边啊。哎,曹操,诶,这样写总感觉怪怪的是吧?是。嗯,诶,他俩音还挺像是吧。嗯。对,因为对咱们中国人来讲呢,这个性其实很重要的是吧。对,你像这个传统中国一讲,说的是生生儿子是吧,除了有劲之外呢,就是儿子可以延续你整个家族的姓嘛,是吧。
39:03
哎,对哈,所以呢,就是你的姓呢,咱们讲什么大丈夫是吧,这个这个叫什么。行,不更名都不改姓是吧,其实这个姓呢,你不能改名,还可以改一改。比如你长大了,你像现在大家这个年龄,你跟你爸说,你说我这个名感觉不好听是吧,能不能换一个。呃,你爸可能不太乐意啊,说了两三次之后,你愿意换你就换吧,是吧,但你要你跟你爸说,爸,咱家这个姓。是吧,那能砍死你是吧?嗯。对,所以性的话呢,在中国人的眼里呢,是很重要的啊。跟这个外国人好像不一样,你看这个,呃,欧洲人或者美国人这个女女的,比如说嫁给这个男的之后呢,这个姓可能就跟男的姓了是吧。对啊。对对对,但是你说他要是。又又又二婚了,三婚了,咋整?这姓里劳改是吧,对啊。
40:00
啊行,再来一个啊,比如说这个刘备是吧。背流啊,这个怪怪的啊。好,这块你看我就添加了两个客户啊。然后在这个bank里边呢,呃,其实我这块没有写参数啊,你要写个参数呢,你还可以把这个参数呢附到这儿指明呢,我们每次造这个bank对象的时候呢,诶,你指明一下你这个数组的长度,我这儿呢就相当于给写死了啊,现在呢,我往里边呢,就添加了两个客户了。啊,两个客户啊好,那接下来呢,比如我们拿这个bank的点,我们去获取一下啊get customer,我这呢就选一个零。啊,其实就把曹操给取出来了啊。取出来以后呢,我们接着我再去调的set count。我就连续写的,看能不能理解啊。这儿呢,我们就把曹操呢取掉了,曹操取掉之后呢,曹操呢有个属性呢,叫count,我通过SH的方式给他去你个账户。呃,然后呢,这块我还使用匿名对象。啊,这里边儿呢,CTRLP。呃,还有一个属性啊,给他1000块钱。
41:01
啊,这个时候我就给他附上了是吧。好,那么在接下来啊,我通过半点,我叫get,嗯,Customer,我还写零啊,然后找到这个曹操了,然后呢,Get他的count,找到他的账户了,然后呢,我给他花了50块钱。那就这样。哎,这个呢,去理解理解啊,哎,来这块我们去做一个run。啊,说这块成功取出50块钱。哎,就这样来说,还剩多少钱你就接着啊,bank.get哎零是吧,Get它的account.get它的balance。哎,这不就是这个余额吗。诶,这块呢,我刻意的把它写的很长啊,看看你能不能接受。啊,这个一下就行啥。括号一下是吧,还有一个。引号。啊,这样啊。好,这个账户。
42:01
呃,余额。哎,为是吧,哎这样就可以了。来,右键我们去run一下。诶这块呢,就还剩950。哎,这个题目的话呢,我们整个呢,其实就做完了啊。好做完以后的话呢,这里边儿,因为我们涉及到这个类啊,其实有点复杂是吧,所以这块呢,稍微的啊,我给大家呢,画一个简单的一个内存结构图啊。哎,我把他那先盯一下,这咱们放到这儿。小一点啊。然后这个是customer。啊,这个我就直接提供他这个属性这块了啊。然后还有这个bank。好,这个我们就放到这儿啊好,这个内存结构图呢,咱们看一看对应的这个课件啊,课件这里边呢,我放了一个PPT里边呢,就把诶核心的这几行代码呢,我就诶先放到这儿了啊。好来,我们就拿这个代码呢来去做说明了,首先的话呢,这个main方法一进来对应的就是一个战争啊,就入战了,那就到这儿了啊,这是may方法。
43:05
哎,就这么着啊,然后在这里边呢,首先哎,我们生了一个叫bank,哎这样的一个变量,然后在我们这个对空间里边,我们就new了一个bank。哎,所以先整一个bank啊,Bank呢,比如说就在这了。好,这个半个里边呢,你看有俩属性啊,这俩属性呢,咱们得声明一下了。嗯,再这样啊。好,第一个呢叫customers,这是一个小写的啊。诶,Customers,诶这么着这一个,然后再一个叫number of。ACC。这么着是吧,好这俩呢,有点大了啊,小一点啊。再下点。啊,这极限了。哎,往里边我们拽一拽啊。嗯,这个也就也就到这儿了啊,这个这样。哎,这么着啊好,呃,我们的这个,呃,站空间里边这个B,呃,这边我们就指向对空间你造的这个对象了,这个地址我就不写那么细了啊呃,你把你的这个手机址你附给我,我这儿呢,就直接指向你了。
44:13
诶,这不就我们办的一个事儿,诶然后这时候呢,我们这个customers呢,这个暂且呢,目前这是个no。引用类型的啊,这是一个零对吧。嗯,好,目前呢,我们这个结构呢,就长这样啊,诶还没诶不对,诶还没完呢,啊我们这个bug里边呢,给大家初始化了是吧。对,这不我们在这个半里边呢,这样操作了哈,这样操作的话呢,那我们这个还没完事呢,需要呢,你把这个长度为十的这样一个数组呢,给它造出来是吧。哎,插入一个这个,我看这个十个行不行啊,不行了,咱就短点吧,假设那五个啊。哎,这个我就放到这儿。这样啊。那么这块呢,咱们假设呢,我这个构造器里边呢,呃,就给这个数组呢,初始化长度为五了,呃,相当于这时候我们这个就不是这个闹了啊,把它呢就删掉了。
45:10
嗯,这时候呢,我们就指向了啊,你这个数组的首地址值了,哎,相当于就是诶指到这个结构这。我们稍微的往上一点吧。哎,这样呢,就指过来了啊好,那这呢是custom类型的这个数组啊,那数组呢,因为是引类型的,所以这时候我们都还是no的啊。哎,行,哎这儿呢是没有问题的,哎,那么到此的话呢,我们第一行代码应该算是结束了是吧。好,那么接下来的话呢,我们通过这个bank呢去点啊叫爱customer,哎,准确来讲呢,At customer这也是个方法了。那其实呢,你也应该得有一个战争得进来,这叫艾特customer,然后呢,你把这个呃全孙啊这两个的话呢,这呢作为食参付给你,这个里边有个叫F,有个叫L是吧,哎,付给他,然后在这里边干啥事呢。
46:00
哎,我们又拗了一个对象啊,拗的对象也在里边。然后呢,最终呢,你把这个对象的地址你给了。是不是第一个位置啊。给了他了啊,然后把这个用的这个对项呢不是在这儿了,然后给了他,同时呢,这个number of customer呢,这个也给改了改。哎,所以这个细节呢,我们就不说那么多了啊,通过这样的一个操作的执行里边呢,首先啊,在内部呢,造了一个对象。啊,这个对象呢,就是我们customer类型的这个对象了,对象呢有三个属性。啊,这仨属性好了。哎,我们把这仨属性呢,给它整出来啊。My first name。At last name。啊,选中。这个变小点啊。OK啊,这个我们就放到这儿,诶放到这儿以后呢,我们这块呢,有一个地址是吧,诶这块呢,就指向你这第一个对象了,然后呢,通过我们这个实参呢,诶在方法里边呢,这不是在造对象的时候,给大家就附上值了。
47:02
那这个呢,就是权是吧。这个是孙。哎,这样啊,Count在这儿呢,没有负,所以呢,暂且它是个nor。啊,这是第一个场景啊,然后再接下来的话呢,我们通过爱的方法呢,又造了一个对象啊,那么类似诶这个位置注意就不是闹了是吧。先把这个闹给大家干掉一下啊。然后接着的话呢,你又创建一个对象。这个指针有点问题啊。嗯,设置。这是结束的,这样啊。好,那我们这块呢,就又添加了一个曹操啊,这块我把它呢,比如说复制一份啊,诶这个我们就放到这儿了。啊,接着呢,就是我们放到这个第二个这个位置啊,就它。那这个地址呢,我们就也给他附上了啊行,具体的地址我就省略了啊,这儿呢是曹操。
48:02
哎,这样啊好,那么这呢,这一行代码就也搞定了,诶现在内存当中,诶这这个忘了改了,我们第一次这个添加完以后呢,它变成了是一了,诶你第二次又添加一个呢,这个就变成二了。哎,就是这块呢,就记录了你,哎,这里边儿有几个元素啊。好,那接着的话呢,我们通过这个半点get customer啊半呢找到它,哎,然后呢,调对应的这个方法,这个方法呢,我们最终就获得这个数组当中角标唯一的啊这样一个元素了。获它以后呢,然后拿着它我们再去set count,这又是个新的方法啊,就是该入战争的,诶都有这个战争了,这个细节我就省略了啊,诶然后呢,你在这个堆里边又new了一个count。哎,扭了一个count,这个count,比如我这往这放了啊。哎,咱们呢,这声明一下。这个count这里边儿就有一个属性叫做balance。那就他。这个我们稍微再给它小一点啊。
49:00
这个呢叫余额。诶,然后这个余额的话呢,诶,我们通过这样的一个诶13的方式给这个构造器啊里边呢,对应的那个属性呢,复制为2000,所以这个位置呢就变成2000了。啊,这就是它啊,然后呢,你把它呢,这不是通过set这个方法的方式呢,付给我们customer那个属性叫诶相当于我们这个account,这它呢就指向了是这个结构,它就不再是个nor了。哎,就这样个情况啊,诶把它删掉行,就这样一个指向,然后接着的话呢,我们就是通过这个bank get customer哎,找到这个角标一的这个曹操了,哎曹操这块呢,我们再盖他的account,这就找到这个账户啊,这个账户呢,给他去取500块钱,就在这个基础上呢,改减500变成1500。哎,就这个场景。呃,整个内存结构呢,哎,我这画了一个简图哈,哎,就是这样个情况,其中呢,这个呢,是咱们的办的对象。啊,这个呢,是咱们这个bank的对象,然后这个呢,是咱们这个,诶customer这个对象啊,我们也可以稍微的比如说给他换个颜色哈,这个呢是customer。
50:06
然后这个呢,是我们这个account啊,这是不同类型的这个对象。哎,这样我区分一下就行了,这个呢,只是我们这个呃,Bank里边这个属性啊,每个位置呢,其实都是一个customer声明的一个呃类型了啊,具体放的都是地址啊就可以了,行,大家把这个呢,稍微的哎关注一下就行啊,把它CTRLC。这个我们粘过来就放到这儿了。嗯,在这呢啊,Shift加改名啊,这个是内存的一个解析。好,那么整个呢,关于this呢,这两道题目呢,我们就说到这儿啊。
我来说两句