00:00
好,那接着呢,这个课后还有一个这个面试题,这个面试题呢,咱们昨天呢,其实也已经提过了,说多肽呢是一个编译行为,还是一个运行式行为,对,是个运行时行为,因为我们运行时到底执行的是哪个此类的方法,这个咱们是不确定的,咱们呢,昨天这不是写这个叫interviewed test,就是我们这课件里边的这个题目了,这个题目呢写的特别好。就是因为我们这时候呢,你看代码,你是绝对猜不出来,此时呢,我们想调的是哪一个的,因为我这写了一个R随机数,你运行的时候我才知道这个随机数是多少。哎,这个呢,就非常好的证明了我们的多态性是一个运行式行为。好,这个呢就不多说了,大家下来呢去体会一下,面试如果问到这个题目呢,你得能够解释清楚,那么一个拓展的问题在这呢,还有一个小题,CTRLC粘过来,粘到我粘到这吧,这块比较少一些。
01:04
CTRLDCTRLD,回撤L站到这还不行了,因为这俩里边还都叫base了。贝一吧。保存。好,看这道问题,这个题有点难度。首先我定义了一个贝斯,这呢有一个方法,这个位置叫可变形参,输出的是它,然后定义了一个子类,子类呢继成为BASE1,也有个爱的方法,体会一下这算不算叫重写。
02:01
先先不说结论,这是就是这样一个结构,这呢就是一道这个真正的一个笔试题啊,这个题其实还是挺有难度的,这个没有先忽略掉,接下来我呢多猜了一下。这时候呢,我调爱的方法,爱的方法123,首先呢,编译肯定能过,因为编译上我认为调的这个方法,现在一付给了A2,三付给了他问。输出结果是贝斯一还是萨一?嗯,这道题呢,其实也有点像什么呢?就是你要是去面试的时候,假设他就给你扔过来这样一道题,你要看这个题面的话呢,其实还是算比较简单的,在这也属于考的,就是看着很简单,但是实际上做起来也有难度,属于那个考的知识点呢,你要说偏吧,也可以理解成是偏,因为平时咱们开发中很少这样的去处理这样的问题,如果呢,像这个位置我要改成这个点点点。
03:06
这就没啥意思了,这肯定是一个,是不是算是个重写了,那现在呢,关键呢,我这块呢,写的是一个中号,主要呢就取决于你要不要把它认为是一个重写,如果你要认为是一个重写,结果是多少萨一了,如果你要认为不是重写呢,那就是贝斯一了,那这个我们就直接从结论上来看了,是S1,那就相当于是认为是重写了。这个事儿其实你要去究的话呢,咱们其实也提过这个事儿,咱们当时不是说过,在一个讲讲这个可变形态的时候,说在一个类当中,咱们不可以去定义行参是它和这个的,它俩不能同时出现,不能同时出现,那压呢,是不是编译器认为它俩一样啊,什么一样呢?那就是行参一样呗,那你现在在子符类当中方法名也一样,他也把这个认为跟他的行参一样了,那是不是就算是这个对他的一个重写了,我其他有满足。
04:08
所以呢,这块呢,理解为是一个重写了,所以说呢,出来的叫萨。啊,就这样挺偏的一个知识啊,但是这个大家你也得注意一下,接着接着我把这个打开。在此类当中,我又定了一个爱的方法,123。就是明确出来了,有这样的三个参数,首先这个方法和这个方法呢,是可以共存的啊,包括呢,你要把它粘回来的也都可以共存,那么这个时候呢,输出结果是多少。哪个包?那么说萨班尔的同学,谁勇敢的给解释一下,为什么,因为三个参数他就萨班尔了,严格按照咱们说的这个知识点啊,就是你不要去这个去去去自己异想天开,你就是咱们讲过哪些知识点就硬往下推,咱们面向对象呢,讲到这个份上的话呢,大家其其实是可以讲因为所以了,不像咱们讲第一天课,讲一个流程控制,讲一个这个变量,说规定这样写,现在的话呢,因为所以是可以解释清楚的,萨尔能解释吗?
05:36
谁谁能,谁说能,其实这时候呢,讲这种题的感觉,我自我感觉感觉是特别爽的,因为就是呃,我知道答案是吧,大家不知道答案,就是怎么说呢,都很担心哈,所以有时候呢,有的这个学生会怎么考老师呢,就是学生拿着这道题问老师,老师这个题为什么选C,然后老师看了看啊,因为这个刚讲完说老师我看错了,这个应该选D是吧,老师就记啊,DD也是有道理的啊,刚讲完D说老师这个答案好像是A,把老师就气死了,就嗯。
06:16
那这个答案应该是什么呀?萨一嘛,对吧,我们,嗯,我这个我把它打开就是为了混淆你一下,这跟他没有关系啊,我编译的时候呢,这不是掉的就是父类中的这个方法吗?那就是它吗?运行的时候呢,咱们不是认为重启了,重启的是它重启你这个方法还能重写它呀,人家这好几个参数,你这就俩确定俩,你你哪能重写它呀,所以你这要重写的那肯定还是它呀。这纯粹就是为了混淆你一下打开了而已,然后接着呢,我把这个打开,嗯,这个因为咱刚才改成叫萨一了嘛。我把这个贝呢强转了一下,呃,就是向下转型了,然后我这时候呢,再做一个爱,这个时候呢,这时候是不是就下班了,对这咱们当时讲课时候说过,你这呢是一个不确定多个,我这是确定多个的,确定多的是不是优先调用啊,就这个事行这个题呢就说完了。
07:18
就是题呢可以很偏,但是呢,这个大家你就严格把控咱们讲过的那些最核心的知识,那个呢是永远不会变的,你就可以拿着这些知识呢,去解释咱们遇到的各种各样的实际开发中的问题。
我来说两句