00:00
接着的话呢,我们看一下后边这个练习五,这呢是一道编程题,编程题的话呢,是一道几个类,Person student和graduate,提前呢把这个类呢都写好了,我们直接呢拿过来用就行,右边的话呢,要求我们去创建一个测试类,测试类里边呢主要呢实际上写一个方法叫method方法,形态呢是一个person类行,下边呢根据这个要呢去设计这个method的方法就可以了,所以我们这呢直接呢去按照这个要求造一个instance test类。这CTRLV粘过来finish这呢已经给我们现成了这样的几个类,我们CTRLC直接拿过来用就行,诶ctrl v ctrl shift f调试格式,然后接着呢,把这个声明呢,也CTRLC粘过来,CTRLV调过来,行,我们来写这个结构。
01:00
那首先呢,看一下我们这样几个类,Person定义了一个两个属性,然后一个get in for加了一个属性get in for重写了,又加了一个属性get in for又重写了行,比较清晰。然后接着说呢,让我们在这里边定一个叫method的方法,Public这呢,先写成个word,它也没有说法位值就是word了。first类型呢,写个E,然后在我们这个method方法里边说,根据E的类型调用相应的get info方法,我们回头赋值的时候呢,可能是体现为多态性了,你要是一个student,你就调student这个方法,你要是一个graduate呢,就调这个方法,是person呢,You的是个person,就调这个方法,那我们这块呢,怎么写,我能不能直接就一点盖零符这样写?说你拗的是谁,我就要求调哪个方法,这样写行不?
02:00
题看懂了不?有点懵了都就是我们回头调这个方法的时候呢,我们可能附的是子类的对象,你是哪个用的哪个对象,我就调你那个类的方法,我这样写行不太行了,你自然而然的不就是虚拟方法调用了吗?诶CTRL1这那我们叫个inerl,我就直接呢,那打印一下这个infer了,这不是这个C清楚吗?我这写个没方法,我呢,要想调这个method,先得造当前类的对象。然后通过这个test,我现在调这个method,比如我这里边去new了一个student。哎,你完这个,嗯,有没有空单啊,有空单构造器,我拟完这个student以后,这个你付给了它,这就是个多态了,自然而然你下边掉的get的in是不是就一定是这个方法了。你new的是谁,他重写过,那么这就虚拟方法调用呗,所以调呢就一定是你student里的,所以这块呢,你不用提前说,再判断一下,说E是不是一个student,是student里边不还是这样写吗?也不用强转,所以呢这就OK,这呢就叫虚拟方法调用了,然后再接着他提到说如果你这个E呢,是一个person的对象,我能让你输出a person是student的话呢,输出俩是graduate呢输出三。
03:28
那显然的话呢,你看这个范围是大一些吧。这个范围就显然更小一些,你要写呢,是不是也得先写这种范围小的呀,咱们讲if else的时候不是说过吗?把范围小的写上边,否则的话呢,下边没机会执行了,就啊,那我们得先写graduate,那这里边儿呢,就得判断了,说如果这个e instance of。叫graduate out斜杠,如果呢,它是一个,这个叫什么是。
04:05
毕业生,毕业生还是研究生?就是生这可以查一下这个说如果你是他的话呢,我们就输出叫a graduate student student,这样我就输入他了,说如果你要是还得再输入这两,那你把这两呢也加上。CTRLC。C。这样这呢,如果它是一个graduate了,就这样,那else if,如果这个if instance of student student的话呢,就输出的叫a student a person,那就是管这两个呗。这样然后在else,在else我就不用再判断了,因为你能进来,它一定是个person啊,它一定是个person,你就别再else if e in instance of person了,那必然是个to,直接就else了,Else的话呢,只输入它保存,这就写完了,我们现在呢,用的是一个student,那就意味着它能够进到这个逻辑里,哎,这不就它嘛,上面呢,是你这个get infer出来的。
05:29
就这个信息,这个题呢,其实就写完了,就。就这样写,顶多的话呢,就有的同学呢,这个格式呢,可能有一些变化,这个变化的话呢,也无外乎呢,就是这样了,这算是一个方式一,然后呢,还有一个看着格式上稍微简便一点的。方式二。就是这块呢,我们写一个if,它我就写个它CTRLC。这么着一下,然后下面呢,我就独立的再去写这个衣服。
06:07
这样,然后在下边写这个,再写个衣服,就是关于这个person。CTRLC好,CTRLV一下这个能看懂吧,嗯,你要是一个student的话呢,输入它,那接着这个也一定能进去,那顺便呢,把它也输出了,你要是个graduate的话呢,那就这个这个这个就都出来了。就这个意思,就是这两个写法呢,就是我们练这个if false啊,怎么写都可以了,这里呢,主要我们关注的还是上边关于这个方法调用的时候体现的一个多态性啊,这也是一个基本的问题了。
我来说两句