00:01
我们一点点过这个呢,比如说作业了是吧,起码这个题意的话应该没问题,看练习五说学习继承多态方法的重写,刚刚好是我们在。呃,前一天学的基础点。首先呢,我们将创建account的两个子类,分别是一个savings account,一个checking account,就是这个时候这样的两个子类。嗯。那我们就直接看吧,啊,直接看那个UML图,这个里边的话呢,我们注意到这个,呃,Balance前面是个什么,是个井号是吧,井号表示。Protected。井号表示protected,加号表示public,减号表示,所以说现在这个saving account跟这个checking account都需要用到balance这样的一个属性,那么这个将变为protected,然后在此类里边可以来直接用这个属性,其他的没有变化。
01:07
还是返回布尔值,而这个C测框里边的话呢,有一个利率,这个我们在前面,我们实际上写另外一个练习的时候呢,也涉及到,然后有一个什么呀,有一个构造器,对这个balance和这个呃,利率进行初始化checking account。这里边有一个可透支的一个透支保护overdrop protection,然后的话呢,它有两个构造器,一个是。啊只初始化balance的,还有一个是既初始化balance又初始化这个透支保护的,然后的话呢,他重写了这个withdraw方法。好,回来。说,嗯,修改account,将balance改为protected。创建saving account继承他继承account。
02:00
该类必须有一个double类型的,呃,利率的一个属性。该类必须包含两个参数的构造器,在构造器通过super调用父类的构造器,然后对这两个来进行初始化。我们先写这个吧。会到这个里边来过来。三。把这个改成protect。为了跟大家这个题能对得上呢,我们给他上一个啊。这是第五有五吧。对稿改成。Protect改成protect的特点是我们可以在子类里边直接对这个属性进行访问,嗯,这是我们想到的一个这个特别重要的一个点,然后呢,创建一个C框。
03:12
复制叫saving account。继承。保存大家看。我只要一写继承的话,那就报了一个错,报了一个什么错。我account里边我们显示的定义了一个代餐的构造器板,那我这个里边的构造器里面一定要通过super括号的方式去调那个代餐的构造器那一点点来吧。这么写。
04:01
要求的话呢,一共这么多。第一个要求。第二个要求。三个要求。啊。一个属性。利率。创建带参的构造器source。战争。构造器。OK,就长这样一模一样的哈,你看点完这个以后的话呢,这个这个戳就没了。再然后呢?完了这点。这上面也是这样的啊,好了,下一个是checking account。
05:10
Check呢,我们刚才大约的看了一下。有什么呢,有一个。Overdrive the protection。创建。第一个展。第二。
06:04
第三。第四。六。行啊。那我们看哈,第一个扩展写完了这样的一个属性。嗯。构造器,这个构造器是这样的是吧,带餐的。初始化superb。那这就是一个参数,所以说一个参数的话呢,S扩造器这个不小就可以了。这样就可以,然后是两个参数的。就这个意思呗,是吧,一会儿修改方法。挺麻烦的哈。
07:03
这个呢,跟我们那天写那个差不多。嗯。修改。With Joy。方法。怎么写的呢?你直接return一个false。没有错啊。然后是。嗯。看能不能够,如果要能够的话呢,直接执行,不够的话用透支保护,差不多跟我们那天写那个一样啊if。衣服什么呢?Balance balance大于等于T,正常进行减等AMT。完了,这个应该是return to吧。True OK else。Else else的话怎么了,是不是我这个余额的钱不够啊,这时候看啥透支保护吧,我们看T大于硫大于等于什么呀。
08:12
哦,角就等于。MT应该或者是也可以。这样写好一些。就是说透支保护的这个钱。应该I等于。MT减这个balance能理解这个意思吧?是吧,比方说哎,我只有100块钱,我要取150,那你这个时候你透支保护是不是应该大于等于这个50啊,然后我首先需要把透支保护这个这个钱给减一下。然后呢?拜的灵吧。这今天我们讲了是吧,这个呃,顺序是有讲究的,你要先这么写的话,我透支保护,这就不对了吧。
09:06
回来再然后呢,再然后是个什么情况。后者保护也不够吧,你看。Boss。就是我们整个的情况。第一稿。余额。不够。第二种情况。透支。保护。不。最后有一种情况,啥卡都不够了是吧,余额不够。余额不足,借透支保护也不足。好了。最终的结果呢,就是这样的,大家注意哈,我这个方法的话呢,最终是不是返回了一个处啊,我只有在这个时候写了一个returnfor吧。
10:08
所以说整个这个代码这样看上去的话呢,要简洁一些。洗完了么多五。复制回来。Taste。F2改成。四。稍微然后需要改一些东西哈,对于半个五里面的打开。这些。对票。就这吧。首先点它加一个包pad,然后ctrl shift o。二号屋里边了啊。
11:01
CTRLTCTRLTCTRLD写完。A customer account。创建。Bank的customer跟他们的账户,我们看创建了一个人叫珍妮史密斯,就写完了这个代码哈。这个是呢,创建他的账户是有多少钱啊。有500块钱3%的利率。C、所写法看。哎哟。这个时候的话呢,是不是得把这个呃,针对史密斯先搞出来呀,怎么搞啊。半点at,所以负值应该是几啊?这不零啊,第一个人吗,Set new。Saving account,他说是500,后边是0.0。
12:02
是0.04吗?0.03。洗完。好好看一下,这一步很有讲究。一会我们通过debug的话呢,我们再跑,我我首先呢,我通过这样的方式呢,我取到刚才加的这个真题史密斯,然后我设置的这个账户是谁呀,是不是saving account呀,我们点一下这个方法,大家看这里边传入的是不是一个account呀,是不是一个多肽呀。这个矿可以接收我矿的对象,还可以接收我矿的任何此类对象吧,对吧,哎,这个实际上是一个多肽再来。那后边这个道理跟这个道理差不多了。放个点爱。欧文。
13:03
好,写完这个,写完之后的话呢,我们再回来。加一个获获取了一步哈,然后的话呢,金账户他写就写了是吧。Count。哎哟。该。Account。500没有做出保护,你就就是一个500呗。那怎么说有没有透支保护啊,这个check account,我是不是有两个构造器啊,一个是只有余额的,还有一个是带这个透支保护的吧,那这里边没有脱支保护,那个值就是零呗。加了一个人取出来让他是大家看这。500块钱透支保护也是500,写法就是卡点。
14:04
Set new。Sha king。Count。500,而且后边是500,是这么写。再来。后来。又创建了一个人,这个人叫玛玛莉亚索雷,玛莉亚索雷咋写呢,这么写。半个点爱的custom。哦,直接来了是吧。二。受累,然后呢?呃,给它取出来。然后怎么了,然后说我让他跟他的这个丈夫啊,用一个账户,你看这块这个写法啊,我直接是半个get customer to,这应该是谁呀,是不是这个team错了呀。
15:04
获取他的账户,这个时候的话呢,这两个人呃,Team so和这个玛莉亚so用的是同一个账户,后边已经写好了,直接跑就可以,实际上后边这个写法颇具技术含量,我们到后边有一个练习的话呢,我们就就需要来写这个,但示这个不用写看吧。跑起来。那这个结果肯定是一样的。我不我就不比了啊。结果肯定是一样的,行了,这就是我们整个的这个。呃,练习,那这个练习里边的话呢,确实是包含了比较多的东西,我们现在我们从头到尾的再给他过一遍,我们来看这个。看他那从这个里边我可以来进行debug外卖办啊第一个。
16:00
我们看第一个的话呢。我在这块,嗯,我我来把这块打一个断点,有半点爱的customer,于是我们来跑,看样子哈,又见。Deb job application。好起来。这个最小化怎么看呢?这么看,先看这个半。打开K大家看。再打开customer,实际上的话呢,这里边儿我们知道我们在创建这个customer的时候,它是不是有。有几个长,是不是有五个长啊,是不是都是闹呢?看见了吧,哎,都是闹好了我加一个进来。这个我们前面学过,我加一个进来啥样了,我第一个我是不是有个卡了,这个卡的名字是。
17:03
珍妮史密斯,但是这个卡通矿是不是还是闹啊?加完之后的话呢,我们知道这个耐卡怎么变成一了吧,是这样吧,再来。嗯,我再下一步,这我通过我通过这个半get customer0的话,我们还是来看这个B。Bank卡通零是谁呀?是不是他呀?把这个取出来,为他设置账号的这个值时,集我account为他设置这个new SIM account吧。再下一步,你看我画的有值了,框是谁呢?就是这个啊,5000.03就是这么个过程。然后后边的过程和这个是一样的。啊,一步一步的,我们就往后看就可以了,大家往后再看下一步。
18:00
再下一步你看又创建了一个人,这个直接变成二了是吧,这里边儿账户这一加下一步。打印这个不用管哈。你看啊,就是这个值,那如此的这个下来,整个这个就可以就可以完成执行。那这里面我们用到的这个点。在我们新学的里边,我们怎么用的呢?主要是主要是用了这样的一个东西是吧,在我们,呃,这个里边呢,是吧,我们用到了,比方说这个里边我们用到了这个继承。这个里边我们用到了方法的。重写。然后在。具体往卡膜里边去放account的时候,我们用到了什么呀,用到了。多肽,因为这个里边我可以放saving account跟check account对象都可以,这不是个多肽吗?
19:00
而再往后来。再往后来,我们还用到了什么呢?我们还用到了。这个时候我们看后边后边这个后边哈。我调这个withdraw方法,那我具体调的我们知道都不是我con这个类的withdraw方法有一个是是吧,这里边有可能我我来调那个叫呃,Checking account withdraw方法,这边还有一个虚拟方法。调用,这是我们整个的这个执行的过程。这里边儿哈。看看这个练习五的去。练习五的去一呢,是使用这个ENT of运算符看一下说。这个时候啊,要麻烦一点,这个题。这个时候是说,诶,我先需要来这个修改,Customer是customer有多个账户。
20:02
是卡通有多个账户。怎么有多个账户呢?跟。Bank有多个。这个客户的方式是一样的,所以说我要求customer有多个账户,说修改customer类来处理具有多种类型的联合账户,例如用数组表示多重性一节所做的一种方式是吧,然后完成test banking test bank没写完,需要把这个写完。然后使用of来检测这个类型,然后输出结果是这样,好吧,那我们把这个来写一下吧,这个应该是把这个移上去要五二。Close all。打开。然后我们找到什么呢?我们找到这个customer不一样了。
21:04
他说我这个卡啊,可以有一个联合的账户类型都这么写。保存同时跟那个一样是吧。In。这样的这个默认初始值是零。最大化。这个是没问题的。有没有什么用图啥的呀。没有。好吧,你自个写吧,然后呢。Get get,这,这就不是set了是吧?叫什么叫at account咋写?有没写过啊?啊。什么?
22:00
Number of吧,加直接来了啊,等于返回,应该返回啥呀。返回。In X。Account in X还有啥?还有一个方法就是get number of account。写完就是根据,根据哪个写的呢?根据这个写的。看这不是吗,一个两个哦,初始化没初始化。不可能,还真忘了是吧,加一个人进来,这个返回,这个返回。那差了一个,差了个什么呢,这块。New。好在呢,这个二就够了,我这不有两个账户。写完你看这是我们前面讲的这个一位数组在这块的使用。写完写完之后的话,然后来搞测试吧。
23:06
服饰。后来。F2,这是几嘞?五。CTRLV52。直接干掉吧。Controll的哦,搞对了哈。五二里边的。写完啊,这里边的话呢,用到了一个number of mind,这你可以不管它,大家肯定不管这啥意思嘞,这里边用到了个它,因为后边我打印的时候,我有一个人民币的这个符号,这个的话呢,是对这个数字进行格式化的,在后边我们讲国际化的时候讲啊,所以说我们可以先不理会它。
24:07
一会我自个直接写一个,对,可以先去掉,但你要是会的,你要会写的话,你可以来写啊,就先去掉。Customer啊,这块没有S。五二。前面他们已经写好了,我们不用管。我们需要写谁呀?我需要写字儿。这方法写的不对,对名就number白。他吧。保存可以了,到这块的话呢,就没错了哈,然后我们去改什么呢。我们来改这个。
25:02
写出两个结果好。首先还是需要看一下啊,他说打印的是什么呢?是一个customer report谁呀。这个这不是吗?Customer report底下是一些值,一个一个来看。这是,然后这是这个。嗯,底下的这个什么呀,就分割线是吧,分割线,然后你底下来底下来写,大家看我这个是啥呀,这个是不是获取了一个卡通码啊,它有两层for循环,为什么是一个两层for循环啊。为什么是一个两层循环。因为。我银行有多个客户吧,我客户可能会有多个账户吧,所以说是一个两重循环,那这个上面的话呢,这个卡信息已经打完了,就是换句话说,我现在可以跑起来。
26:02
把门关一下吧。宴会。你看。这个时候的话呢,这个信息实际上我能看到一部分。我差个差点什么呢,差这个。是不是后边这个账户账户的类型和当前那个余额是余额是多少啊。于是回来吧,过来往后往后找,你看,这是决定账户的类型吧。写呗。使用判断这个账户是什么类型的if。又啥嘞?Court of。Saving account。那这个c count的话,那我count cap就等于。什么呢?
27:00
Health。Account。In terms of。Leging。Count。On the time。等于等于谁呀,按他这个写法。副本开啊。说一下啊,大家在这个。金山词霸的帮助下,这样的英语必须能看懂。没得选,你必须看懂。再来这个呢。打印这个类型打印就out呗,按按他这个意思是吧。嗯。一个什么结果呢?我们可以看它。什么类型或者is多少钱?C来类型,冒号类型是。
28:04
Account。爱家。这个。加。放个点get啊。Seven。是不是这个效果呀。这就是我们最终的结果。就长成这样好了,那这一块,那这个里边的话呢,这个步骤跟前面比起来看。有哪些不一样呢,我们看哈,我。首先卡通有多个账户,跟bank有多个这个客户是一样的,这块没什么说的,你只要前面这个理解了,这个大家就应该能会写哈,主要是在这个里边,这里边我们主要用的什么呀,主要是来练习使用了这个instance of,我们写的代码就在这呢,判断一下有一个输出就可以了。看这个。
29:02
任务三,实现更为复杂的透支保护。机制。这是练习一的选择练习。它包含了更为复杂的透支保护机制模型。它使用客户。存储,使用客户存储完成透支保护,本练习必须在上面那个练习的基础上才可以执行,这里面东西比较多。但能看明白啊,啥意思,来看这个图。以前呢,我们那个checking account里边有个什么呀,有个overdraft exception还记得吧,Overdra protection有个有个透支保护的,一个一个透支保护额吧,现在这个透支保护额变成变成谁呢?变为他了。就是说现在我要是再花钱不够的话,我将从我这个C矿里边来扣钱,懂这个意思吗?所以说嗯,我要说一下啊,如果你要是在昨天没有好好看这个东西的话,你听起来肯定是要困难。
30:15
嗯,看这个吧,CB则矿必须扩展,它有一个大玻璃型的这个两个参数构照器C,这个我们是不是写完了。这一点都不差哈。后来。上曲午餐。打开。这个不用改,一模一样的。然后呢,拆框率比较复杂。
31:00
不。就会复杂一些。拿到这儿来。周。转他这没问题。关联属性就protect by,这个属性是什么类型呢?是saving矿的类型,这个空当,那个透支保护就是这么写。不然不要了。C。Pack。这个是那个透支保护。然后照器。S还有一个两个构造器的,两两个构造器倒是好说。
32:01
后招期这个好说,跟这边一样,基本上。是不是已经写过了啊?第十个呢,复杂一点。先看这两个吧。这个去掉。产生后照器。OK。招地。同穴位的照方法在这儿呢?如果够的话正常运行,如果不够的话呢,从那个。来补补差额怎么补啊,以以前是用这个这个透支保护是吧,现在投支保护应该怎么看啊。点。是这意思吧?就是说我跟我关联的这个protect里边这个余额去补,补完之后他应该怎么写。写成,然后他给个点做吧,取钱取取多少钱啊,取配写钱。
33:08
是零这个完成能看懂这个意思吗?就是我先前去取这个钱的话,我怎么取啊。我先前取钱的话,我是不是说,嗯。直接你看它。我现金取钱的话,我直接在这透支保护上边去扣是吧,而现在的话我怎么办呢?我是不是在这个pro buy里边用这个去扣啊。别的没变化,这这就可以了。看结果。测试。三哦,这个还得看。还没完。太恶心了哈。太恶心了,还有这个。修改卡,使其拥有两个银行账户,一个是这个,一个是这个,两个都是可选的,这个还没写完呢。
34:04
复制。给谁呢,改卡?都是可选的。K有一个。矿的关联属性。重写这个类。三。四。
35:01
那个吧,不行了,这个啊。重新写有两个嘛,是吧,原来的这个里边有一个称作这个的关联属性。控制它重写,包含这个和这个确认,这是now。有两个方法,有两个get方法,有两个方法,这还行是吧,不要了。Dragon。嗯嗯。啊,都是有空的类型的是吧。这样写比较好。嗯。
36:01
Ting。好,写完。你不要了。这都不要了啊,证明对应的盖代方法。欧了。太难。五三。二。注意注意哈,这是五三,从五三里面来获取。毕竟不要干掉。演他。ADD。这个B。O。
37:07
写完。S。Saving account和没有S。Big。Said saving。我这写错了。哦。回来。这个职业不对呀,这什么呀,IM。哦。
38:09
That saving。C名词有空这个写法啊。It checking account。我这块的话呢,就是说这个方法写的有点不一样,这个不要紧啊,太脏。Saving。我起来。这是一个。A new checking account。放一下什么问题看看啊。他说。200后边就get c宾果空就不对了。我们看看这个方法来,你点一下它有问题有问题有什么问题呢。点一下它checking across,我们看checking account这边是有两个参数吧,一个是它saving account,我点一下大家看这是五三里边的吧,没错,回来。
39:09
方法的问题。Flag。追命做矿保存。还。他。这个吧。这个大家看,这是五三里的点,它没错,回来回来。我这个范围值。包的问题应该是这也是五三里边,那这个返回的应该也是哦哦,看这个。这比较恶心了啊,这个戳里藏的比较深,比较深,什么问题呢?你看看这个方法,这个构造器里边有两个参数吧,一个是balance,一个是什么呀,这后一个是C可框的类型啊,而我现在的话呢,我这个方法返回的是个什么类型,这不是我框的类型啊,这样的话你需要转一下,所以说干脆我在这块写得了。
40:09
Saving account。该空改一下这个。South and that。Saving checking OK。保存退回来配好了哈,这个也一样,这个我靠。再来开心。我告诉。再来。Savings。行,写完了。
41:00
还有一个。建议大家呢,把这个task这个类的话呢,跟着看一下,我跑一下跑一下大家看结果。是不是出了一个控制针异常啊,看着这个结果是一样的。61行。这一行,这一行是什么意思,大家看如何来看这个异常啊,我们后边我们会讲61行这块会有这样的一个异常,叫我框位照175出异常了,实际上出的话呢,在这这什么异常了。我点一下它,我点一下这个37行,然后我再回到这个test里边来。好。就是这一行列这里边啊,我右键debug Java application跑起来。大家看这。This。
42:00
Protected,这是正常的。好啦。啊,在这呢,大家看我再次取的时候,它是个什么情况,这个时候我是不是尝试来调protected by get better方法呀,但实际上这个protected by是不是闹啊,那我调这个闹的这个方法的话,这么一调的话,是不是会出异常啊?懂这意思了吗?就是说我在进行透支保护的时候,我应该注意一个步骤在哪呢?Java回来在这儿。在。这个位置,这个位置你看我如果要是余额要是够的话,OK,如果余额要是不够的话,你是不是要进行透支保护啊,现在你要判断一下这个透支保护。存不存在,它有可能是不存在的,于是开在必须不等于闹的情况下,你再进行保护,懂这意思吧,你只有有这个透支保护的话,你才能保护,没有的话是不是不行啊。
43:12
OK,这个时候这个结果就OK了。再看。你看这个时候这个结果跟这个结果就一样了,这就是我在写的时候呢,这块我需要注意这样的一个步骤,什么步骤呢?我在进行尝试透支保护的时候,我要先判断一下我透支保护指向的这个账户。是不是空,如果要是不判断的话,刚才就是哈,我无论有没有特殊保护的话,我都来保护,那你没有保护的话,那你不是注异常了吗?哎,这块是我们需要注意的一个地方。别的再再没啥了。
我来说两句