00:00
行吧,那咱们再继续再往下吧,各位啊,咱们再往下啊,那再往下的话,咱们看一看这个之前的作业行吧,因为之前的作业咱们还没有说啊,这块呢,咱们昨天呢,就是讲的是这个异常,各位啊,咱们在讲这个集合之前,把之前的作业说一下。啊,来24的这个作业是啥?写一个阿米代表一支军队,是不是这个类有一个属性微胖数组,用来存储该军队所拥有的。所有的武器是吧?该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的。最大武器数量是不是啊,并用这一大小来初始化W数组啊,初始化W数组。呃,该类呢,还提供了一个爱的微胖这样的一个方法,表示呢,把参数微胖所代表的武器加入到数组W当中。是不是,哎,然后在这个类中还定义两个方法啊,Takeo和这个。
01:03
是不是哎,让W数组中所有的武器攻击,让以及move or让W数组中所有可移动的武器移动。那么这一块的话,咱们怎么去写这个程序呢,各位。这个程序其实还是有一定难度的,是不是啊,有一定难度的啊,那么首先大家看一看啊,这个程序啊,我就直接写了啊,我就直接写了来,这是第24天的一个作业,那作业的话我放到哪呢。第22章吧,行吧,第22章啊,今天的一个新的东西,我的作业在这在这啊。 packagecom.b power node点,然后我们就叫做DAY24的homework。行吧,D24的homework啊,然后在这块呢,我们首先的话,我们先定义一个接口,各位。这个接口呢,呃,定义完之后你就知道了啊,定义完之后你就知道了,比如说叫可移动的。
02:02
Movable。Movable接口。可移动的接口里边有个方法,这个方法叫木。很简单啊,移动的方法。啊,然后呢。我看这个作业里边说呀,他说这个有一个有一个attack哦,表示所有武器攻击是吧。这个是木移动吧。对吧,那攻击的话,这块咱们也应该有一个接口,可攻击的或者是可射击的。我们新建一个interface啊,叫short。Shotable啊,Short啊,然后呢,这个是可射击的,可射击的。
03:00
那么可射击的里边有个方法,有个射击方法。Shot。射击行为。这是移动行为啊,可移动的方法,这是移动行为。一个是。啊,可射击的那么有这么两个接口,然后接下来呢,我们这个。我们干什么呢?哎,我们得在这儿新建武器吧,各位。是不是新建武器啊,那这个武器呢,它有个副类是不是。还有个负类啊,叫叫什么叫微胖是不是。武器那行吧,咱们给个类吧。给一个class啊,叫微胖。武器啊。武器,各位。
04:03
所有武器的什么副类?所有武器的类啊。那么接下来呢,我们可以编写子武器,你就说是这个里边需要写东西吗?哎,注意。呃,我们先不写啊,不写任何东西,各位啊,先不写任何东西,然后接下来我们在这干什么呢?我们去写一个武器吧,比如说。坦克。坦克。这个坦克这一块咱们应该怎么做呀,各位这个类应该怎么写呀?首先它是个武器吗?是武器是吧,坦克它是不是可移动的?另外坦克是不是可射击的,移动和射击都行吧,是不是?哎,大家注意看啊,坦克是一个武器啊,可移动对吧,可射击。
05:02
可射击或者是攻击对不对,它都行,所以说你这两个这两个接口都得实现,那这样的话,我们得实现这里的方法呀,Move和short方法对不对,哎。坦克移动对吧,然后这块呢,坦克开炮。啊,坦克开炮。这就是一个一个一个一个武器嘛,是不是,哎一个武器啊,那么这块呢,我们再来一个class,再来一个武器啊,比如高射炮。高射炮。行吧,这个类注意啊,它英文比较长,我就不写了,就写汉语拼音啊叫歌凹高诗阿射高射炮啊来,那它是一个武器吗?它是一个武器是吧,但是它不能够移动是不是,它只能什么呀,攻击是不是哎只能攻击来简单在这。
06:09
写一下啊,这个叫高射炮。啊,是武器,但是不能什么呀,移动。只能攻击,或者只能射击。大概是这个意思,各位啊,是这个意思。然后接下来呢,我们去实现这个方法。然后我们输出叫高射炮。嗯。开炮啊,来就这么简单,写一写吧,啊,然后呢,接下来我们这是一个高射炮,然后这是一个坦克,这是武器,然后接下来再往下的话,我们再来一个。我们再来一个class啊,这class比如叫fighter啊,战斗机。这个战斗机呢?去继承谁呀?微胖是不是去实现什么呀?它应该可移动吧。
07:02
是不是啊,另外同时它是不是应该是可射击的。对不对,哎,那么这个时候呢,我们写上啊这战斗机。战斗机啊。那么战斗机这一块的话,这个。把这两个方法加上。啊。是武器啊,可移动可攻击啊,然后这块的话输出啊,叫做战斗机。起飞,战斗机开炮。啊行,那就简单这样啊,然后咱们还有别的吗。比如说我们这个。在战争当中啊。
08:00
我们有什么呢?还有什么,还有这个,比如说专门运输物资,物资的这个飞机。它应该是只能够移动,不能开炮吧。是不是,所以说这块的话,咱们就假如说叫叫物资啊,物资机,物资飞机行吧,汉语拼音啊来这个呢,也是一个什么呀,微胖啊。步枪啊行,那么这块的话,咱们去去实现什么呀,我们的叫做movable,但是没有我们的shot是不是物资,物资运输机。物资运输飞机是不是运输机啊?那么是武器,但是只能移动不能攻击,实现这个接口啊,那么这个时候呢,我们在这里去实现move就行了。
09:01
运输机起飞啊,那行了,那现在呢,我们有两个接口,一个我们的一个武器的数组啊,武器的一个类啊副类,然后呢,所有的像fighter啊,高射炮啊,坦克呀,包括物资飞机啊,哎,都去什么呀。都去继承我们的微胖,都是武器嘛。是不是,哎,都是武器啊,那么接下来我们去写一个测试程序,呃,不是测试程序,还有阿米是不是class阿米啊,阿米军队。对吧,啊,这是一个军队啊,那么军队这一块呢,它有一个什么呀?有个数组,有个微胖数组。是不是,哎,微胖数组W或叫微胖吧,就这么地吧,行不行啊private啊,假如说是private修饰的,那么这个时候呢,我们这是一个武器数组,武器数组各位,那么这个武器数组呢,这个里边啊,大家注意啊,它是那。
10:01
明白吧,默认值是个档,接下来提供构造方法,这个构造方法呢,有这个叫做无参数的构造方法,我们就提供一个构造方法,无参构造就不提供了,各位啊,只提供一个有参数的构造方法,传过传过去武器的数量。啊,传过去武器的数量,然后呢,我们微胖这个数组,New一个什么呀?哎,New一个什么呢?微胖这样的一个数组,动态初始化,把抗传进去,你比如说这是创建一个军队的方法吧,哎,这是创建军队的方法。的构造方法啊,这是武器数量,你明白吗?通过这个武器数量传给这个数组,这样的话,这个数组啊,就给它初始化出来了。啊,但是你假如说你给他拗了一个什么呀,哎,一个微胖这样的数组给了一个十,那比如十个武器,但是你别忘了,这十个都是空。这十个都是空。动态初始化吗?是吧,你要注意一个问题是动态初始化啊,数组的元素默认值都是那啊。
11:00
动态初始化数组中每一个元素默认值是钠,要注意这个问题啊。啊,就是武器数度有了,武器数组是有了。但是武器数组中,武器数组中没有放武器。明白吗?所以大家看我这个题里边,我还故意跟你说了,你再提供一个方法叫ADD的微胖方法,然后你再提供一个attack or和木on的方法,是不是,那你ADD微这个方法是加武器啊。是不是那行吧,那加武器吧,那提供这样的方法,Public是不是,哎VO什么呀,ADDV,然后V参数传进来,V参数传进来,然后把这个微胖呢加进去就行了。对不对,哎,把这个微胖加进去就行了,加到数组当中,这个其实就是相相当于将武器加入什么呀数组。对不对,哎,加入数组,那么接下来他还有一个方法叫attack all方法叫攻击。
12:02
是不是那攻击的话,那你就来个方法,Public avoid attack or攻击是不是啊,这是所有武器攻击,所有可攻击的武器攻击,明白吗?再来一个方法,他说什么需要再有一个叫move方法。木奥方法是叫做让什么呀,所有什么,所有可移动的武器移动,你看让所有可攻击的武器攻击,让所有可移动的武器移动。是不是,哎,这是加武器加武器。好了,那么这块的话,我们应该怎么做呢,各位。加武器怎么加呢?所有攻击,所有移动都是操作这个数组就行了,这个无所谓了。是吧,哎,大家想一想。怎么做添加武器怎么加,你知道加到哪吗?你知道加到这个数组下标的什么地方吗?
13:12
就这个微胖是往哪加?怎么做?各位,你们是怎么做的?加武器。Index等于负一。往档上加,你看两种方案,小鹏说是在这给个下标是吧?给个索引呗。伟斌说是往那上加行都行啊,都可以,你这块可以对它进行for循环,Int类型I呢等于零,I呢小于什么呀,这个微胖这个数组点Les I干啥呀?加加,然后呢,你把这个微胖,如果说我们的微胖这个数组下标为I这个元素,如果它要是等于等于钠。
14:05
明白吧,那么这种情况下,我们的微胖什么呀?哎,S下标为I的这个元素给它附上去微胖就行了,把微胖呢附到什么空上面。是不是哎,附到空上就行了,那这个附上去就行了,不要继续再往下循环了,Break就可以了。啊,就完事了。那还有一种情况就是说,如果你循环了一圈,发现这个。发现这个这个这个这个数组已经满了,你怎么办?怎么办,各位?不能再加武器了,你怎么办?嗯。提示啊来异常。太棒了啊,太棒了,异常,那么这个异常怎么做呢?
15:02
报错是不是给他个异常就行了,各位啊,所以正好呢,把今天的异常再加上去行不行。其实也可以说是数组下标越界啊之类的啊,我们我们的话在这儿就嗯。加一个异常,各位啊,异常这个叫做什么叫做。微胖,Index out of Bo exception。数组的,呃,这叫这叫什么武器的啊,武器的这个,呃,下标越界异常。行吧,嗯。或者说爱的吧,爱的微胖吧,添加武器异常。然后让他去继承谁啊,Exception是不是,哎,然后接下来我们在这怎么办呀,提供构造方法无参的,是不是再提供一个什么呀,有参数的。
16:11
Super写上S是不是,哎,这个叫添加武器异常,那么这块的话,我们的怎么就异异常了各位。那。Return return啊。程序如果到这块,各位程序如果执行到此处,说明武器没有添加成功。对吧,如果这个有有空的话,是不是就加进去了。对吧,哎,程序能到这儿。这说明这个没执行啊。对吧,你就在这throw呗,你有一个什么呀,ADD的一个exception对吧,说武。
17:09
一达。已达到上限。叫武器数量吧,已达到上限啊就完事了,行了,那这块这个异常呢,我们拆开肯定是不太合适,Throws往外抛就行了。对不对,哎,程序到这儿就抛异常就完事了啊抛异常好了,那么这个是我们让所有可攻击的武器攻击,那其实就是便利数组啊。是不是便利数组,便利我们这个微胖数组吧。是不是,哎,那变离这个速度应该怎么变利呀,For循环呗,因对性I等于零,I小于什么呀,这个微胖数组点Les I加加,你每循环一次,是不是从这个数组里边取出下标为I的这个元素啊,判断这个元素它是不是可攻击的对不对?哎,If,如果说我们这个元素instance of,它是一个叫做shortable。
18:05
对吧,哎,它是可攻击的,那么接下来short转型对吧?Shortable强转shortable,然后后边是we PS下标为I,下标为I的元素强制类型转换,转换成一个shortable,然后shortable.short就可以了。你看。这个是不是就是如果你这个数组当中的这个元素,它是一个可射击的,可攻击的,那你转型。对不对,你用微胖掉不了,因为你微胖呢,调这个叫少掉,这个少的方法没有没这个方法武器是吧,只是一个普通的类。如果这个它是一个able。哎,那我们就转成short,然后去short就完事了,那move on呢,跟这个一样,也是遍历数组,各位。那么便离这个数组呢,这块呢,取出的这个元素,如果它是可移动的叫movable,那你这个时候你转型应该是Mo啊。
19:03
是不是,那这个应该move movable嘛,是不是movable啊好,那movable呢,去move就行了。所以这块呢,你调这个叫move.move就可以了,这样就完成了。这样的话,所有可移动的,你看所有可移动的都移动,所有可攻击的是不是都攻击啊。对吧,所以这个时候这个接口是不是就起上作用了。对吧,哎,接口起到作用,你用微胖掉不了,各位你知道为什么用微胖掉不了吗?因为微胖只是一个普通的类,这个类里面没有任何方法,你让他去攻击,你让他去移动不行。不行啊。你看这个程序的设计。对吧,你调词类中特有的方法。你调子类中特有的方法是线下转型啊?对吧,调用子类中特有的方法。向下转型对不对,包括你下边这个也是一样。
20:04
调用此类中特的方法,先转型转成Mo,让它move。但前提是你得判断它是否是个摸啊。如果他是一个木的话,它才能转啊。你高射炮转不了,高射炮不是个Mo,我们可以看看高射炮,高射炮在这儿,你看它是一个什么呀?Short,它不是Mo,所以它转不了。明白吧,这个条件它是不成立的。所以这个里边他就不会走,不会move。明白吗?啊,就是这个意思啊,这个意思,那接下来我们这个程序呢,需要做一个测试程序,那这个测试程序这边呢,我们就直接构造一个,构建一个军队是不是阿米。啊,那我们一共是几个武器,我看一下啊。一共是。战斗机、高射炮。坦克。
21:00
物资飞机。阿米阿米六,阿米六的时候传进去,比如说四个吧。啊,这个军队只有四个武器啊,军队只有四个武器。然后接下来添加武器,那么你添加武器,阿米应该调用我们的一个叫做ADD的wep,是不是武器,那武器这边是不是得先准备武器啊,要创建什么武器对象是不是,哎武器对象怎么创建呀?那你可以用多肽也可以不用嘛,是不是?哎,你比如说像呃fighter战斗机fighter用一个fighter。是不是,然后战斗机,然后坦克是不是坦克溜一个坦克,你想要啥溜什么就行了,对吧,然后再往下的话,你需要溜一个什么呀,叫做物资飞机,物资飞机溜一个物资飞机好了。那除这个之外的话,我们还有一个叫高射炮,高射炮你有一个高射炮啊,高射炮来我们这块呢,应该是添加呗,Fighter是不是,哎,然后接下来再拿一个,然后这块呢,我们需要加什么呀,坦克我们可以往里面加什么呀,物资飞机我们可以往里面加高射炮是不是好,那么这块的话,我们可以再一个,比如说fighter这块,我们就一个FIGHTER2。
22:25
第二个战斗机我们加进去,再往里面加试试,我们叫做阿米,是不是阿米点什么呀。Weapon,然后这块的话我们加什么加fighter fighter战斗机。对吧,哎,那这块的话我们就可以直接啊,嗯,在这个位置上我们加一个这个try catch吧,啊try catch,然后把这些东西全放进去,各位啊进去。好了,那这样的话在这儿呢,我们输出信息就行了,1.getmessage就可以了。对吧,哎,让所有可移动的移动。
23:03
让所有可攻击的攻击,可移动的移动应该是阿米。军队点叫什么呀?叫做可移动木,是不是安?第二什么呀,Attacko表示攻击对吧,那么这个时候呢,我们来看这个程序啊。武器数量已达上限,哎哟,这这是这是输出这个信息跑到这儿了是吧?啊这是因为什么呀。因为上面这个加了一个两个三个,然后四个,然后第五个,你看这一共是四个吧,再加第五个的时候。是不是是不是就出问题了,对吧,武器数量已达上限吧,然后再往下你看战斗机起飞,坦克移动,运输机起飞,然后战斗机开炮,坦克开炮,高射炮开炮,这是所有的可移动的移动,可攻击的攻击,就是这样一个效果,各位啊,这样一个效果。
24:00
那你可以在你的这个,呃,阿米军队里边添加这个武器的时候是吧?啊,你可以给他输出一句话是不是,如果附上值的话,你就告诉他武器,武器添加成功呗。是不是啊,什么武器呀。嗯,微胖。对吧。添加成功,那么这个微胖呢,它对应的是它它呢应该。对,它是个武器嘛,是吧?哎,那武器这块呢,呃,有高射炮是不是,你可以重写to方法,你可以把所有的武器的突方法重写一下,因为这个地方它会调凸出论啊,它会调to的凸出论方法是不是啊,你可以重写一下啊,重写一下。那么重写的话,哎呀,咱们现在就不重写了啊,就直接运行吧,就这么着吧,啊来看看。你看上面是这个武器,这是战斗机对不对,武器添加成功,这个武器加成成功,坦克物资机,然后高射炮是不是添加成功啊啊添加成功啊,武器数量一旦常见上线天加第五的时候出问题了,如果在这里重启突方法的话,这块可能会更好看一些啊,更好看一些,然后这个作业就做到这各位啊,这个作业呢,最主要是锻炼一下大家,这个呃叫做接口的一个使用,主要是锻炼大家接口的一个使用啊接口。
25:25
对,当然你做完这个例子,你也不一定不一定懂接口怎么用啊,可能还是云里雾里啊,云里雾里这种感觉可能需要去慢慢去培养吧,啊慢慢去培养,慢慢慢慢你就知道,哎哦,这个地方应该定一个接口出来。现在还不太行啊,因为这个东西大家很难去想到是吧,写一个微胖这样的一个。嗯。让负类去实现接口呢?None等于等于。We胖。
26:01
嗯。阿。这个是吧。这个你不愿意这么写的话,你这样写也行。等于等于,那也行啊。林森啊林森,这个能看懂吗?林森,你这个能不能看懂?就是如果它要等于等于那。哦,这样能看懂,这样看不懂。一样啊,这个写法跟这个写法不一样吗。都是双等号。样样,样样。微胖数组。感觉武器类空空的,感觉怪怪的。哦,感觉这个武器空空的,你可以给武器加名字呀,每个武器都有名字吧,是不是你可以让你的程序更好一些,明白什么意思吧。你可以让你的程序变得更好一些,无所谓啊,这块的话,你比如加一个什么string内吗。
27:03
是不是每个武器都有名字呀,就只不过我这里没有做那么复杂,没有做那么复杂,各位啊,你可以做的更好看一些,更好看一些啊。嗯。好。这这个能看懂就行啊,如果这个数组下标为I的元素为空,那就把武器加到空的位置上呗。这个意思就比如把武器,把武器添加到空的位置上。啊,空的位置上,如果。我还有军队名可以太完美了啊,军队这块你也可以加名字,但这都是次要的,主要这个题目不是不是说那些东西边边角角的啊,咱最主要说的是这俩接口。对,你要是能把这俩接口想出来,那就就太太牛了啊,现阶段来说,如果你能把这个Mo和这个shut这俩接口给它,给它想象出来的话,我觉得我觉得这个就太牛了,就太牛了啊,但如果你想象不出来,其实也可以也可以理解的啊。
28:04
要有假设空的意识。嗯。行,那这个的话就比较综合了,连异常都用上了,你看是吧,异常也用上了对吧?哎,这几天东西基本上都用上了啊都用上了。
我来说两句