00:00
行了,那咱们接下来继续往下看,刚才说到哪呢?这个A5之所以它不能开始mouse的原因是因为什么呢?是因为A5的类型是animal animal呢它译器啊,在编译的时候你要听清楚啊,它分编译器和运行期,编译阶段呢,它检测出来A5的类型是animal,于是乎呢,他就去那个animal这个字节码,这个代码里面去找什么move方法。呃,不是找木方法,找什么木方法,找这个catch mouse抓老鼠的方法,结果没有,所以报错了好了。假设代码写到了这里,我非要让,我非要调用catch mouse方法怎么办?注意听了各位到关键了啊,我我现在我就我还爆脾气,我还就上来了,我还我还就想抓老鼠,我就就就这么写,我92行代码,我就这么写了,然后我还就想让他抓老鼠,你怎么办?在这你有没有什么辙,你这应该怎么做,你就能抓老鼠了,你反正用A5.catchmouse是肯定不行的,因为编译器不允许,你看编译报错了,你看编译报错了,你看说你catch这个方法不存在,说找不到符号,什么符号,这个符号找不到在哪,在这个位置上,在animal类里边找不到catch mouse,你看编译器人说的很清楚,在animal里边找不到抓老鼠的方法。
01:18
是不是,哎,那今天我我还我还就想让他抓老鼠了,咋的对吧,这块怎么办?假设戴起来我非要调用开帽子方法怎么办?我就让他抓好了,这个时候就必须使用向下转型了,注意啊,向下转型了。注意啊,必须用强制类型转换,你明白吗?必须用强转换,就是说什么时候我们在这里写个结论,各位什么时候我们必须得用向下转型,什么时候必须使用向下转型,一语道破机关,各位什么时候必须向下转型?
02:06
如果你想访问的方法是子类当中特有的。你好好理解这句话,如果你想访问的这个方法是人家子类对象中特有的方法,在父类里边压根就没有。是不是应该做向下转型?负类没有对,就是说什么时候我们要做向下转型,不要随便转啊,不要随便做强制类型转换,什么时候向下当当当,你需要访问的是子类对象中特有的方法。此时必须进行向下转型,这些东西都应该在你的笔记上出现啊,笔记上出现,那么大家注意啊,不要光靠我去记笔记,你应该去记笔记啊,你一定要去记笔记啊,这十期的课堂笔记,我们这个文件我们再打开啊,打开之后呢,我在这里补充一下。
03:14
上午讲的是继承,然后再往下讲的是方法的覆盖,那再往下呢,我们就是多肽的基础语法,是不是叫做多肽的基础语法,我不知道第一件事儿我给大家有没有说明白,交代明白,就是关于向上转型和向下转型的什么概念,是不是,然后第二点我阐述了什么是多肽啊,然后呢,第三点,哎,就是我强调了什么时候必须进行向下转型。对,其实就是这几个什么线下转型,什么线下转型,对吧,什么是多肽,然后呢,什么时候必须进行线下转型。那么现在我们程序其实就到这儿了。对吧,那来吧,在哪跑哪了,你看这个同意跑跑哪了,这是啊诶。
04:05
啊,在这。在这啊。嗯,你看我这个。下边这个任务栏满的话,它这边就就自动在这儿了是吧?哎,自动在这儿了啊,打开的行T01这块啊。嗯,这个时候就必须线下转型了,怎么转?A2,哎,不是A2哪个来着A5。A5啊。八前面加个小括号,转成一个猫。然后用一个猫去接收一下,猫变量去接收一下。然后接下来X能不能抓老鼠啊?我们先去编译一下各位,然后再去运行。叫TEST01走。好,大家看,猫正在抓老鼠,也就是说我们这行代码是能够编译,能够运行,对吧?好了,这个为什么没报错,各位。
05:06
就以下以下这行代码为啥没报错。因为A5是什么类型。Animal类型对吧,因为啊A是animal类型。转成K吧,哎,转成什么k animal和K之间存在什么继承关系?所以没报错,好大家思考一下是不是这个道理,A5编译器检测出来是一个什么animal对吗?你前面是个cat是不是,所以这个时候呢,你打开你的程序看一看,你的K和animal之间是不是存在一个继承关系,父子关系,我之前很早就给大家下了一个什么呀,这个通知,这个通知是什么?不管你是做向上还是向下转型,你的大前提是什么?大前提是两种类型之间必须要有继承关系,如果你两种类型之间没有继承关系,不管你是向上转型还是向下转型,通通报错,通通报错各位。
06:18
啊,通通报错你明白吧,哎,所以说这个程序大家看就可以,没有任何问题,你看Java c编译,你看Java去运行,你看可以正常运行吧,哎,什么时候做线下转型啊,什么时候做线下转型,哎,如果你调的这个方法是你此类中特有的方法,你就需要做强制类型转换,需要加强制类型转换符,这就是强制类型转换服,各位啊,强制转换服。A5,什么类型?诶,编译器检测到这个animal animal和前面的K有没有集成关系,有,所以编译器报错不不报错,运行时也没有报错啊,大家看程序执行很正常。好了,这是我们所说的这个向下转型。
我来说两句