00:00
同学们,那今天开始我们,呃,现在。做个作业的一个点评,先把这个作业做一个点评,我们打开上次课布置的作业。诶,上次课布置的作业,那么上次课呢,我们一共给大家布置了大概有13个题,对吧,这边九个,那边四个啊,那么我们把呃这一部分的呃作业给他做一个点评,我们看第一个题,他说请编写一个conversence,一个对象,就是转换或者或者呃呃转换的一个对象,那么这个对象它要求我们加入哪些方方法呢?呃一共有三个方法要求我们写,对吧?第一个方法呢,是把这个因尺,就是那个因尺的单位转成厘米,第二个呢,是把这个加深啊加仑,把那个加仑,然后呢改成深就是单位的。单位的一个转换,那么这边呢,是把这一个阴里转成这个公理啊,那这个很简单,同学们呢,可能是需要查一下他们之间的单位计算啊,那这个很easy啊,就直接写一个object这么一个,呃,对下conversence个对象,然后呢,这里面呢,我们定义三个方法就完事了,主要是呢,需要同学们在网上去查一下,因此和厘米的一个转换单位,比如说诶,传进来是一个英寸。
01:28
那么我们这边呢,呃,转成厘米,它们之间的单位转换是2.54,同样把这一个加仑,然后呢,改成这个升呢,它的单位进值是这个,阴里转成公里是这个,好这个第这个题应该对我们来说,呃,没有什么难度,没什么难度,好第一个题我们这就说过去了,也不去测试了哈,比较简单。我们再来看第二个题,第二个题呢,他说定一个point的。
02:00
类就point的类和一个伴生对象,那就是呃,一个class point,还有一个什么呢?就是我们的object pointer,使得我们可以不用六,而直接用POINT34来构建一个point实例,用apply方法,那这个很简单,我们在昨天讲过,我们构建对象呢,从目前来说,大家至至少知道有这么呃三种形式,第一种呢就是六,第二种就是apply,还有一种呢,就是我们的匿名子类,对吧?所以说这个很简单,你在point里面加一个apply方法,然后这个apply方法里面呢,可以接收。呃,这个两个整数,然后在这个apply方法里面去反用,在把这个六这个动作藏在哪里呢?藏在这个apply方法里面就可以了,这个呢也很easy,大家看一下就行了啊,这是我写的一个类。啊,这个就是我们的point这个类啊,这个类里边呢,我定义了两个属性,对不对,这是两个属性。
03:08
啊,这是个属性,那么这里呢,我使用了什么呢?我使用了一个主构造器的方式来构建或者说初始化的属性,这个很easy,这个就写完了,写完以后呢,我们写了个object point里面我写了一个apply方法,这个apply方法里边呢,调用了一个new point,那它就在apply方法里面会返回一个point,这就写完了。非常简单,没什么难度,我简单把这个给大家做一个测试哈,因为这些代码比较简单,所以说我直接就跟大家呃演示一下就可以了,呃,那么我把这个作业呢,放在我们CHAPTER08里边,我写一个文件夹。啊,OK home worker。Homeworker,那么我们来做一个点评,来运行一下EXC02对吧?这是第二一个题。
04:06
好的,然后呢,我们这边写一个。啊,主函数啊,写一个主函数。好,然后呢,我把刚才这个答案呢,放到这边就可以了,非常的简单,我们试用一下,测试一下就可以了,测试。嗯,怎么测试呢,我VR我就直接这样写啊point。传入两个。呃,两个值分别代表它的横坐标和它的纵坐标。然后VR下。好,然后呢,这边我们就用pointer就可以了,这个显然会去触发我们的apply方法。啊,不方法也就是这个方法。啊对,那么这个方法它会干什么呢?它会返回一个pointer啊,它会一个返回一个point实例,因为它这只有一句话,所以说呢,我连大括号就损掉了,如果你呃不习惯这个一行呢,你也可以这样子换行啊,换行这样写也可以啊,但是呢,因为只有它这个函数题里边只有一句话,因此呢,你像刚才那样写也是没问题的,对吧?更多的程序员呢,他会选择呃,如果是一句话,他就简单的写在一行了。
05:18
好,我们来用一下看对不对。我打印一下pointer这一个对象实例,那么我运行把运行一下,我们看它返回的是不是一个对象实例的哈西扣的值。看一下。我们运行,我们运行完了过后发现没有任何问题,对吧?诶它返回的就是point一个C,好这个题呢,咱们就说完了,比较简单,我们再来看这一个第三个题,我们看第三个题呢,是怎么回事,更简单,他说编写一个scanner应用程序,应用APP的特质,对APP这个特质里面呢,因为它包含了它这里面写了一个命。Main函数mainin方法,因此呢,我们就继承了这一个APP,过后呢,我们就可以直接去执行我们的语句了,也就说可以直接当作我们程序的一个入口,那么他说以反序就说以反序。
06:13
啊,打印打印命令行的参数就是呃,反序打印命令行参数用空格隔开,举例说,比如说我们传入的是这么一个啊,传入的是这么一个the,这个hello word,那么打印出来呢,就是word hello,就是这么一个意思,好,这个题呢,我们来看一下怎么用啊来,那么我们直接来写一段代码。好,这是我们的第三个题,对不对?好,Exer c03。好的啊,那么这边首先按照人家的要求来说话,我们把这个题的要求呢拿过来哈,同学们。把这个题的要求拿过来。OK。好,那拿过来过后呢,我们首先按照他的要求,他说要使用APP的特质,那简单,我们首先APP。
07:09
APP好,那么做完这个地方过后呢,其实它隐藏了,就它这里面实际上是隐藏了一个主函数的,那既然你隐藏了一个主函数,它的参数是什么德行呢?它的参数就是argue,或者是他他这个参数为什么是这个呢?因为我们往里面追一下,我们追到这个APP里面去。往下搂,我们发现这里面的确有个,它本身就写了一个主函数,而这个主函数的参数呢,人家已经给你写好了,就是A,因此你在这用的时候呢,你也不要犹豫了,直接argue。哎,点rivers对吧,咱们这直接就可以用这个啊rivers。的一个方法。就是给它转换,转换完转换完了过后呢,咱们就可以得到一个东西,我们来看看它是什么东西啊,来我们接收一下argue。
08:05
所以说我们把它接收一下agsarargs,比如说是二吧。A就是二,那么我们可以打印出来no ear,看它是什么样子的一个东西,好吧,大概就是二,那现在呢,我们要我们来这个进行一个测试的时候,看这里面有个小问题啊。啊,这个地方我们argue rivers完了过后。键帮我们输出,它为什么报错呢?啊,这么一个点是吧。好。然后我们print printt,然后呢,ARGUE2。好的哦,那这个时候这个参数怎么传呢?怎么传呢,简单啊同学们,我们可以这样做,大家看到这里面呢,我们切一下,我们怎么切呢?我们可以找一下我们的这个,呃,这个就是呃,EXERCISE03,我们点一下这个地方看看能不能找到。
09:04
啊,这个没有找到,说明我们要第一次要运行一下。好,我简单先运行一下啊,同学们我就随便的做一个测试哈,好,我们运行一把。啊,运行一下,先把这个程序让呃,Idea能够识别。好,那这个时候呢,它输出这句话了,大家看现在已经切换到XX03了,这个比较简简简单一点啊,然后呢,现在我找到以后呢,同学们现在我就可以去编辑一下,好,我把这个打开了,现在打开。诶,这个闪多了啊,打开打开以后。打开以后呢,我们在这个地方点击这有个edit coniggure点进去,他说你要对它怎进进行怎么一个处理,你要传什么参数呢?在这program arguements就是参数程序的参数,那我点一下这里面就可以写我们参数,对吧,以前老师讲过,那我就写一个hello。
10:04
Hello word,好,我们再加一个吧,Hello ABC,我们三个三个参数点击OK,好,那现在我点击完了,我运行的时候呢,刚才咱们设置的那三个参数就会传进去,我们运行一下,对我们运行一下。好的,嗯,当我们运行完了过后呢,我们发现这个地方它打印的是一个地址是吧,因此我们再来做一个简单的处理,MKOK,好,他说用空格隔开,那么我们就用空格隔开走一个。好,我们看一下,诶打错了啊,不好意思,这打错了重新来。再运行下走。OK。好,因为我们reverse了,因此呢,它打印这个结果呢,就是ABC hello word,好,这样就完事了,当然你也可以写在一行,就是我这样给它分开呢,大家看的很清楚,你也可以把这个一一起写到这边,好,好同学们,这个呢,就是这个题的一个简单的评讲,好那么下面这个答案呢,我们也有了,下面我这个是写在一起的啊,这个写在一起的好,我们再来看第三第四一个题。
11:11
第四一个题呢,对于我们来说稍微有点难度。啊,稍微有点难度,因为这里面我们没有提到这个枚举,但但是呢,同学们以前学过Java,所以说这个地方一讲呢,也就清晰了,他说编写一个扑克牌,那扑克牌呢,对我们来说,同学们小时候现在都玩过这个牌牌嘛,比如说梅花方块对吧和红心,还有黑桃什么的,那么他说有四种花色的枚举,啊,四种花色的枚菌,他说让其让其two string的方法返回这个三个呃,四个花色,并实实现一个函数,检查某张牌的花色是否为红色。那么嗯,到底哪个牌是红色,你们可以想象,一般来讲我们应该是这这个是红色的,对吧?啊,这个是红色的,还还有就是这个是红色的吧,方块方片是红色的,好,那么既然如此呢,我就写了一段代码,大家简单看一下就行了,非常简单,我写了一个object shoes,这个名称你自己写,那么我这里继承了一个叫imummer,这个就是枚举。
12:22
啊,同学们看这个就是枚举,那么枚举我先上来做了一个这样的动作,就是type suit value,这个是干什么呢?我先做一个解释,这个呢,我们没有讲过,这个是给value的类型取一个别名,我们来做一个测试,啊同学们,我们来做一个测试,我把这个代表先拿过来,我们来做一个测试,好,这是我们的第四一个题,做一个测试,Exer c,注意听。好,就是那个type,这个表示什么意思,来看一个案例啊,这个type是干什么呢?Type啊,用于可以可以用于可以用于干什么呢?给类型取别名啊,取一个别名。
13:08
啊比例,那你们看一个东西,比如说我们写了个type,我写了个MY。My int,就是我自个儿写了个my int等于等于什么呢?就等于。那这句话的意思就是,我将来这个my my int就可以当做int这个类型来使用的,就相当于给什么呢?给这个int取了一个别名,或者自定义了一个类型,都可以这么理解啊,给int取了一个别名。取了别名啊,为什么要这样子呢?因为待会我要用别名啊,那么同学们这样写了过后,你可以怎么来定义了呢?同学们看,比如说现在我有一个NUMBER1,我呢,用my int来定义,等于888。诶,同学们看,那这样,你看它相对于说我把这个八给了NUMBER1,它的类型是什么呢?My int my int是什么呢?是in,好,那么我们输出一下看对不对,哎,我们输出一下看对不对,好,我输出这个NUMBER1等于加这个NUMBER1,好我们可以看到代码没有任何问题,我们运行一下。
14:19
运行一下好,那么运行完了过后呢,这边就正正常的输出了888没问题,好这个呢,大家先看一下这个含义啊OK,那这个说完了以后呢,下面这个就比较easy了,下面呢,这个大家一看就知道,我用我创建的一个实例,而且用的是value里面的apply方法。哎,那么这个value是从哪来的呢?这个value是从imunration这里面继承过来的,OK啊,就是说它继承的imunration就能用它啊,就能用它,那下面这四个都是一个意思。就是我创建了一个呃红桃,呃这这个黑,呃这个黑桃的梅花的呃红桃的,还有方块的实例,那么同学们看到这四个呢,就相当于是我们数字里面的四个实例。
15:09
再说一遍,这四个就相当于是我们秀里面的四个实例,OK,那有了四个实例下面就简单了,他说要求我们写一个to string方法就重写,然后呢,嗯,把这里面的东西就是s values,就是这个values呢,就把东西都全部取出来,取出来过后呢,我make了一下输出,好这个地方我们来跑一下,好先把这个跑一下啊同学们,我们一点点来好。代码都比较easy啊,代码就比较easy,我把它。好,制定一下,干脆把前面那一句话也拿过来吧。啊,懒得再写了,就这样子,代码都很简单。好,那么写完了以后呢,我们把这个地方稍微的整理一下,诶整理一下来格式化一下,好格式化一下呢,我们来做一个小小的测试啊,先来看它是怎么用的啊同学们啊,看看是怎么用的。
16:03
好,我把它整理一下,整理一下,那同学们可以看到,现在我来做一个小测试,怎么写呢,数。我直接这样写prince。S,因为我们原先讲过它是一个object,那其实这样输出就相当于把数对应的那一个,它隐藏在底层的那一个module Dollar那个对象给说出来了,那输出来它会干什么呢?因为你重写了to斯顺方法。你你如果你不重写这个,因为这个方法to string是是我们这个object那边过来的,所以说你这相当于重写了它,那你一旦重写呢,它就会掉这个方法,而这个s value这个地方是干什么呢?这个其实就是把它里面所有的这一个。呃,都取出来,那这样子的话呢,我们可以看到这个结果就应该是这样子的来运行来运行,我们可以看到这边呢,就输出了四个花色。
17:03
这四个花色就是你这写的啊,因为你构建了四个实例嘛,好,如果你没有这句话,那相当于说什么都不输出,OK,好,这个就说完,就是人家这有要求的,要求是呃,用一个图斯顺方法返回这些东西。好,现在呢,还要写一个方法,就是验证某个花色是否为红色,更简单,那怎么样呢?我就写了一个is read,你我is read,我接收一个shoes,好接收一个shoes,然后这里面我就判断你是一个红心的吗?红心是这你是一个,呃,这个我这用的diamon啊呃,按理说这个用用这个就是你的规定了,比如说我把这改成这个也行哦,我们这认为diamond,哦对,这这个也应该是红色的是吧,没没问题啊,一个红星啊,一个是红星,就这个,一个是DIA,我们是认为是红色的,其他两个呢,是黑色的,好,这个呢很简单,我们来走一下啊,OK,写一下这代码DF。
18:03
啊,Is read is read,那么is read你怎么怎么写呢?那你首先给我传一个这个数字过来,类型就是它的这个类型。OK,好,那这边呢,我们会返回一个布尔值对吧,全称那应该就是真或者是假,那怎么写呢?就应该是这样写的,如果啊,呃,就说他要满足我们这样几个条件,就是你这个袖等于啊,如果全写全了,就是如果它等于对吧,如果它等于这个东西。对吧,呃,这个就是这个条件,如果满足我们就返回一个针,或者哎,就是这样子的,或者两个条里面有一个就是suit,诶suitit。It等于什么呢?Diamond?
19:02
哎,等于这个单针,这两个条件满足呢,我们就认为它是一个针,哎,它是一个针,那么这边呢,我们可以这样写啊,如果写全的话,就应该是一个处啊一个处。那么L10呢,L10呢,我们就认为是一个false,好,这个代码就写完了,但是这样写呢,显得比较的呃,臃肿啊,就这样虽然看起来很好看,但是比较臃肿,所以说呢,我在这写的一个比较简洁的方法就是这样写的,一句话搞定。就是你这两个条件如果满足就OK,那上面代码呢,如果我们简写的话,就是这样一段代码怎么写呢?诶把这个注销里面我们用类型推导对吧,类型推导的话呢,我们这直接写上这么一句话。也是可以的,那这边呢,呃,就叫car,那我干脆也给他保一个一个名字就可以了,对又又因为它是一行,所以说呢,你还可以把这个大括号去掉啊,这就是嗯,这么一种简写的方式,大家看一下,好,现在我们来用一下吧,怎么用?
20:05
我们来测试一下,怎么测试怎么用它呢,也很简单,咱们这样写啊,呃,用的时候,因为它是一个object,我们讲过object的东西里面的方法呢,咱直接可以用,就is read,那这地方要求我们传入一个什么呢?传入这个花色的一种,而这个花色呢里面已经是在袖子里面了,所以说你在用的时候呢,也很简单,你点一下就能出现这么多,你看你你也只能找到这四个。对吧,你没有别的。你没有变,因为我没有给你提供其他方法去创建这些实例,好所以说我就随便传一个红心,那么这个时候呢,应该返回一个处对的,那么再测一个对点is read,假设我给他传了一个什么呢?传了一个黑桃啊,比如说传了一个这个吧,传了一个SP,好这边呢,就应该返回一个false OK,我们运行一下。
21:01
只要这个结果对OK了,好我们运行一把,那我们可以看到这个结果跟我们想的呢,诶这个地方是没有输出是吧?啊这个结果没有打印,那就出不来,好我把它包起来,对把它包起来,下边这个呢,我也把它用print函数打印一下。OK。好,我们再次运行,我们再次运行,那这个再运行过后呢,我们可以看到分别打出了一个处和Bo,好,这就是我们这一个呃题的一个评讲,也很简单哈,也很简单,其实就是这么一点东西,只是呢,同学们可能对这个imunration,因为我们没有没有说过嘛,大家看一下也就很简单的啊,很简单,好我们再来看第呃继承的这么几个题。继承的题呢,我觉得呃,这个这两个题还是非常经典的,就能够充分的体会到我们的重写,还有继承的一个妙用,那么这一个题我们来看一把。
22:02
那第一个题他说什么呢?他说扩展如下的bank account这个类,也就是说他事先给我们了一个,呃,银行account类,这个同学们在题里面能够看到这个类呢,它已经写好了,他让我们去根据这个类写出一个新的checking account,也就是说这个是一个银行的普通账号。这个是他给出的一个普通账号,普通的这个银行账号,银行账号账号内。啊,账号里,而另外一个这个checking account呢,是根据需求,需要我们对原先这个普通的银行账号进行一个扩展的一个新的账号。啊,账号类啊,就是在什么呢?这个在前面的前面的这个bank accounting这个类上进行一个扩展,啊进行进行扩展。进进进行扩展的一个账号内,而同学们在,呃都是到银行去过的,你们看银行这个业务,你看我们每个同学,呃去在银行开个户过后呢,他说诶你这个账号是一个,呃,这个银卡,哎,那个是一个金卡,那个是个贵宾卡啊,另外还有一个什么其他乱七八糟卡,那么每一个卡你看它的对你的这个收费都有可能不一样,比如说你是一个金卡,你去了过后,你叫号人家优先,你看你的卡号的不一样是吧,你叫号都是叫号,人家就是排在前面的,对吧?再比如说你是一个金卡,你再进行转账,或者说是在进行这个存款的时候呢,它的利息或者那个手续费也是不一样的。
23:44
啊,所以说这个呢,还是很有意思的啊,那么我们来看看他怎么做的呢?首先原来的题是给出了一个答案的,就是原来的题是一个红色的部分,是别人给你给好的。就是一个普通账号,这个普通账号是怎么写的呢?大家看它初始化一个余额,就是你开户的时候呢,呃,初始化一个余额,这个我不讲了,里面有一个deposit,就是存款,存款它是怎么存的呢?呃,就很普通,就是你存多少钱,我直接在余额,余额上面加,这个是一个取款,取款又怎么取呢?就是嗯,直接把你的余额减一下就行了,而且返回这个余额,注意这个代码里面呢,其实它不严谨的地方没有判断啊,同学们可以加进去,但是呢,它这个题的考察点不在这里。
24:32
所以他也没有说在里面写了很多这个判断没有,它的考察点是在考察继承和这个方法的重写,因此呢,大家也不要去较劲啊,这个地方呢,后面同学们可以加入啊,可以加入,加入什么呢?加入对这个余额的判断,哎,余额的判断这个呢,我这没有写啊,判断好,这个是原题给的,原题给的过后呢,看一下人家要求我们在这个基础上写一个checking account checking account要做一个什么改变呢,他就改变一点。
25:06
改变这么一点什么玩意儿呢,就这个,他说每次存款和取款都要收一个美元的手续费,够黑的啊,够黑的这玩意儿啊,那么一个美元的手续费,那其实他的目的就是说其他东西我都可以用,但是呢,这两个方法你要给我什么样重写,就这玩意儿。哎,这样就提出继承和重启的概念了,那怎么办呢?非常简单,我们继承它,然后将deposit和withra进行一个override完事,那么override你要做一个什么事情呢?就是你在存款的时候,呃,在这个存的基础上,就把就把你这个存的金额减一个一,就是比如你,呃,比如说你存了九块钱,但实际上呢,在余额里面就体现出八块钱,你取款呢,怎么体现呢?就是你取了十块钱,但实际上我会减掉11块钱。就就这么一点点东西,我相信同学们应该能做出来啊,大家看一下代码就完事了,异常简单,看checking account,看,我给你标一下,就是这个是checking account。
26:10
啊,然后呢,这个谁呢,这个,而且大家可以看到,我利用了一个我们的这个主构造器去调用了它的组造器,前面代码一样,然后我重写了这两个方法,大家看这里重写的时候呢,我调用super,大家注意啊,方法不要完全再重写一遍,没有必要,没有必要,如果同学们在这没有用super,而是直接又写了一份代码,那你就没有体会到我们这个继承的好处,有些同学我我相信有些同学会把这个打拿掉,他会干什么呢?他会完整的再重新写一份。那就不划算了,因为你前面这个方法你都有了,你何必呢,你要把理解这个逻辑吗?他的逻辑不就是你存款的时候,假设存了十块钱,我实际上让他存九块钱嘛。千万不要自己再重新写一份deposit啊,虽然你代码能运行起来也是结果也是对的,但是你没有别人一看就知道这个哥们对吧,对这个不是很了解。
27:09
啊,同样道理,我们在取款的时候呢,取的时候他比如取十块钱,但是我其实在他底层的余额里面要取11块钱,因为还有一块钱的手续费,来我们运行一下,来我们玩一把,啊这个代码因为很简单,所以说我直接拿来用一下。好朋友们,我直接给大家运行这段代码。来了各位同学,那么这个是bank银行的account,注意听account一个DEMO啊,Account就这么写吧,写到这里各位同学,那现在呢,我们来一个数,好这个地方为了以示区别呢,我把这个名称改一下啊,叫DEMO。好,这两个类我拿过来了,同学们应该一目而了然,对吧,刚才老师也讲了啊讲了,那么用一下测试一下就行了,测一下测试一把,那一这个普通账号我就不测了,我直接测它,我直接测它来六一个。
28:07
六一个accounting啊,然后呢,假说我4000存了100块钱,假如我存了100块钱啊,各位同学,那么存了100块钱呢,我现在来玩一把,我现在呃这样子啊同学们,因为我想测试对不对呢?我加一个方法,加一个查询方法,好吧,因为我我没有这个查询呢,我我也不知道这个余额到底是多少,到底对不对,好,我把这地方加一个查询方法。加入在这个组内里加入一个查询余额的对不对,余额的一个什么方法,这个对于我们来说很简单,Df query就行了,好OK,好,这里面我没有做过多的验证啊,什么密码呀,我都没有写,就是直接把这个余额显示出来就行了,好OK,好,写一个当前余额。余额为多少呢?打印出来就行了,Z点八。OK,好,现在我们来玩一把,现在首先我们来看看,当我们刚刚存进去过后呢,余额应该为100块。
29:07
二余额应该为100块,看一下对不对。啊,当年余额100没毛病,那现在我们开始取钱checking啊checking county,比如说我现在呢,呃,取出了十块钱,取出了十块钱,我再查一下啊,因为你这个地方取了十块钱,其实它有个手续费,对吧,他有个手续费,那手续费是多少呢?实际上是一块,那这边查询出来就应该变成了89块钱。只要这个是对的就OK,好,我们预一下,那么我们可以看到它的确余额就变成89了。啊,所以手续费扣了,那么我们现在呢,再来存一点钱看对不对,Deposit,比如说我们再存十块钱,存十块钱其实手续费也有一块。对呃,实际上你你因为有一块,那你就实际上只存了九块钱,那就是89加九。啊对对,就89加上这个九块钱,就98块钱,对吧,因为他是手续费嘛,所以这个银行比较黑是吧,然后这边我们一执行呢,这边应该是98块钱,98块钱没毛病,好正确好这个代码呢,我们就聊到这里,紧接着呢,人家又说了,啊不行,我们还有一种新的账号叫什么呢?叫saving account。
30:20
干什么呢?就说还是老规矩,在原先这个基础上做一个扩展,扩展到人家这提了要求了,他怎么说的呢?他说有一个新类叫save account,每一个月都要算利息的,就每个月有个利息,那么这个利息怎么算,每个银行都有自己的规则,那假如啊,假如我们定一下,就说我我我们写代码嘛,就假如我们每一个月的利息呢,呃,一个美元。假如当然我没有我没有去算啊,比如可能可能根据你的余额去乘以一个百分率,我也我也没有去做了,假如我们一个月每个月月初,比如说这个1月1号,2月1号3月1号月初第一天我们给他结利息。
31:02
那么结完利息过后呢,就把它存到它的余额里面去,我们有一个方法叫earn month,这个inter,呃,Interest就是每个月的利息啊,那么并且每一个月有三次免手续的存款和取款的这个动作什么意思呢?就是说呃,每一个月呃有你如果是在三次以内的存款和取款啊,累计啊,不是不是存款三次,取款三次,是它们加起来三次,那么呃,这前三次呢,我们免手续费。后面呢,就正常的收手续费,那么这个时候呢,呃,这个次数对吧?方法注意听人家写了2MONTH,这个就是在计算利息的方法中要重置交易的交易数,什么意思呢?就每一个月不是有三次吗?那么月初假如我们月初在计算利息的时候,就把那个就把我们这个免手续的次数置为三,以后就不停的减好代码很简单,我们看一下就行了,Very easy啊,前面这个代码仍然不动。
32:05
还是他的那个普通账号,我们对普通账号进行一个改进,怎么写呢?第一个我先创建了或者申定义了,定义了一个什么呢?定义了一个。免手续费的次数。年手续费的次数。这个次数呢,呃,注意你在刚开始的时候,先不要初始化,给它一个默认值,这是免手续费的次数,Number,那下面呢,我写了一个方法,大家看这里啊,这里是每月初每月每个月初,每月初我们系统调用,调用该方法干什么呢?计算利息,他他在这里面就做一件事,就计算利息。计算利息,要计算利息,同时呢,将这个number置为三,因为你每个月有三次嘛,啊将它置为三,你看我这个道理很简单,我我这个利息呢,我就我就假定一个月一个美元。
33:05
但实际上这这算的不对啊,应该准确的讲,应该是余额去乘以它的一个一个那个就是它的那个利息的比例对吧?呃,存款利率好这个呢就写完了,写完过后下面代码我们来看看取款的时候我加逻辑了,怎么取款加了个什么逻辑呢?就是说每取一次。啊,钱取款,取款前这个如果啊,判断取款时。取款时,如果这个number number减还小于零,就是如果这个number小于零了,就收手续费,否则呢,诶我们就不收手续费,收手续费手续手续费,诶手续。手续费否则不收啊,否则不收,否则不收,否则不收,好,那这个就写完了不收。
34:01
嗯,那么这个步骤的话,我们怎么写的呢?先把这个number减一,然后判断。如果你小于零了,因为我一共有三次嘛,我先减,如果你小于零,那么我们就收手续费,否则我们不收手续费,就是把你是多少钱就多少钱,下面代码一样,下面代码我就是把它写成一行了而已。啊已已然调用super方法,就这个方法仍然可以用,看这地方,我们这方是取款,取款的逻辑跟存款一样,取款逻辑逻辑。和和什么存款一样,存款一样怎么写的呢?好也是减减减减判断,判断完了小于零我们就去,呃,存款的时候我们收一下手续费,否则呢,我们不收手续费,代码写完了。其实这里面就是,呃,让大家这个逻辑,呃,有有一个逻,就是有一个思维的一个转换,就怎么充分的利用我们的这个腹内来对我们子类进行什么呀扩展,就这么一点东西,来朋友们我们用一下吧,老规矩啊,来这个地方我就简单一点,直接把这个拿过来。
35:08
只把这个saving account拿过来。对,相当于说这是我们第二类的账号。好,还是在这里写,同学们我就直接写到这里了啊,像这里我们整理一下代码。好,这个是什么呢。好,呃,这个地方没有,诶,我看看这里是。我我多删了一份还是怎么回事。这个地方。这个地方是是不是重新定义过了。哎,我的大账吗,在我是不是。这个就是为什么他说已经定义过了呢。我里面只有一个呀。难道别的地方我用过吗?不对啊,我这边有一个accounting,为什么。下面还有一个吗。
36:02
哪儿有标红的?啊,上面还有一个份哦,是不是我们写两份,那刚才复制的时候多复制了一份啊,把它拿掉就可以了啊拿掉就可以了,非常简单啊好这是什么呢?这是第二个账号,这是这是另外另外。另外一个银行账号一类啊,另外一类银行是不是账号好,我们来玩一把吧,我们来玩一把啊,现在呢,我们再来玩一把,测试一下,把这个先注销。我们来测试一下,来走一个啊,另一个saving啊,Saving账号。Sav,好,就它,当然我们也要来一个预期存款点value好来saving count,那么现在我们也来玩一把,首先我先查看一下当前我多少钱,Query这个呢,应该等于100块。好,然后呢,我来先月初到了啊,假设月初到了我们来,呃,计算了一下利息二。
37:04
好,这个时候存完了,过后呢,我们就应该有101块,101块,好101块过后呢,现在我来开始去这个取取取款取款。啊,我做我做取款,我取多少钱呢?取十块,再取十块,我取十块取了一次,十块再取了一次,再取了一次,好当我取到这个地方的时候,三次就用完了,我们来查一下这个钱现在还有多少。Query,我们来计算一下啊,嗯,因为你这儿101块取了十块钱,这十块这三次我们不收利息,所以说这个地方查出来应该是101减去一个30。哦,当然就等于71块钱。对吧,好,我们运行一把,也也就是输出一个100,输出一个七十一来玩一把。那现在我们一共有多少呢?一共有七,就是这样子的一个结论,好,如果我们再取一次,同学们,好,如果我们再取一次,比如saving,他又取了十块钱出来。
38:06
啊,取了十块钱,那么这次取了,取了过后呢,还效果不一样了啊,同学们看。因为你原先是71块钱,你又取了十块钱,还要扣一个手续费的一块钱,那么这个时候还有60块钱。就对了,好,我们运行一下,好当我们运行完了,给我们发这个结果呢,跟我们想的是完全一样的,好了,好,就就这么简单啊,就这么简单,好这是我们这个题的评价,来我们再来往下看第三一个题,第三一个题呢,他说请设计一个point类,这个very easy嘛,这个very easy,他说XY的坐标可以通过构造器提供,提供一个子类叫label的point,提构造器接收一个标签值为XY的坐标,比如new label的pointer,这个就说加一个标签值,说白了这个地方就是让考察我们干什么呢?对对什么呢?对这个构造器的一个使用。
39:04
其实这个呢,嗯,这个就很简单,我看一下就完了,就是point这个label,我用的时候怎么样扩展。扩展的时候就说我这边可以接收一个,呃,一个字符串,呃两个double,还有一个字符串啊,两个double一个字符串啊,注意这个地方这个顺序有一点问题啊,这个如果按照他这个要求呢,我这个应该写在前边去,不好意思。我这个应该写在前边,去跟他一个对应关系,好稍微的改一下。OK,那这样子呢,用完了过后,他就说我这边可以构建的,同时X和Y呢,交给我们的户内去进行构建,就这么一点东西啊,就这么一点东西好,第三题比较简单,我就不说了,第四一个题,第四一个题呢,呃,它也是考察一个抽象类的使用,他说有个。那么它有个抽象类,求出这个中心点,就是求中心点的一个抽象方法,就他事先在抽象类里面写了一个抽象方法,是求出。
40:06
求出什么呢?求出这个中心点。好,这个很简单了,那说要求我们呃用写一个rectangle和一个circle子类来提供适当的构造器,并重写center pointer,注意因为目前呢,这两个类没有给,没有给具体的要求,所以说你从语法上写一下就可以了。啊,因为没有给出给出具体的这个要求,因此因此我们从语法上给一个就行了,从这个语法层面层面给出一个方法即可,给出方法即可,好我们来看一下就行了,啊,这是一个抽象类,这是一个抽象方法。就是按照人家的要求嘛,你这是个抽象抽象类吗?啊,这个是个什么玩意儿呢?这是个抽象方法吗?诶,就是按照你的要求啊,抽象类抽象方法写完了,下面呢,我写了一个rectangle类,这个rectangle类呢,有它的这些坐标,我这里就写了实现了一个方法,就把它方法实现了,仅此而已啊,继承它实现方法,只是里面我没写空着的。
41:18
下面一样的道理,下面是个circle,我有XY值和它的一个,呃,半径啊,一个半径,然后呢,这边也是空的,写到这了。好,这从语法层面咱们就写完了,好,OK,好了,这是我们的这个第四个题,第五个题呢,同学们按照这个写一下就行了啊,第五个题我就不评讲了,大家看一下就完了,很简单,逻辑是一样的,就是用了一下我们这一个就是考察点是什么呢?根据需求写出不同的构造器,好了,同学们。那么我们上一次的课的作业呢,我们就点评到这里。
我来说两句