00:00
好,那关于这个多态性,为什么要有多态性,或者它的好处是什么?咱们刚才举了这三个例子,后续咱们在写代码的过程当中,其实还会出现这样的情况,还会出现这样的情况,包括呢,咱们这个,咱们这会儿不是做了个练习,这个叫账户吗?你比如说咱们这个账户,这里边没有体现说这个客户的意思了啊,咱们后边的话呢,在这个账户的基础上,是不是你还可以再造一个客户啊,叫customer customer呢,里边比如有个方法,他可以去set他的account,就设置他这个账户,你想set account的时候,我这时候呢,是不是就可以去用一个叫check account进来啊。我可以给大家付一个信用卡账户吗?回头你还有别的卡,我再给大家去下载一个储蓄卡,真的,诶你声明的是一个account付的呢,都是此类对象,这不都是多肽吗?就这个意思了,好,那在这个之后呢,我们再翻回来。说一下咱们刚才提到的这个多态性,这呢是多态性的这个核心的内容,下面呢再提另外一个事情,这呢是我们讲的叫多态性呢,它是适用于方法这块的,咱们没有提属性的事儿。
01:09
没有提属性的事儿,什么意思,大家看我们在person当中,这是一个新的知识了啊,在person当中呢,我现在定义一个ID,比如说这个ID呢,叫1001,保存一下int int类型,然后我们在这个慢里边呢,我也定一个int型的ID叫1002。具体的含义我就不明确说了,这个咱们就是为了体现这样一个知识的说明,这两个定义完以后,大家看我现在呢,这样声明了一个多肽,现在我呢去打印一下p2.id。酷雷有一个,子类有一个。而且咱们强调我说这个属性是不存在这种覆盖之数的啊,那么现在问我们p2.id输出的是1001还是1002,对这时候呢,大家可能说什么的都有了,对吧?这个呢,从通过这个现有的知识呢,其实我们很难呢去推论出来啊,这呢只能是通过这个结论呢,我们去说Java是怎么规范的这块呢,我们执行。
02:19
结果呢,是1001,那也就是我们负类当中定义的这个。属性,哎,负类中定义的这个属性,你要按照方法这个角度来说的话呢,说编译时候看左边,运行时候看右边,如果你要按照那个理解,是不是该是1002了。对,所以通过这个结论呢,我们反过来去说呢,就是叫,哎叫对象的多态性,对,对待对象多态性呢,说只适用于方法,不适用于属性,属性这块呢,是不存在这种多态性的,就是我们这儿呢,你是一个站,这是一个堆,咱们站这块呢,变量名叫P啊P1啊P2是个person类型的,我这呢又了一个慢,在这个堆空间当中呢,这个person里边有这个name,有age,定义了一个ID,这是1001,然后在这个慢里边呢,定义了一个说呃,是不是叫is smoking is smoking这个啊,然后他自己呢,也定了一个ID,这有两个ID,这个呢叫1002。
03:29
这样呢,我们指过来了,首先明确的是在堆空间当中,本身就有两个这个属性,那么本身里有这俩,你到底用哪调的是哪个呀?这时候呢,就是编译和运行都看左边了,人家声明的是person类型,那我调的就是这个,哎,只有当你呢,诶声明成是一个慢类型的时候呢,它才会掉这个1002。诶是这个原因啊,所以说大家先记住这个事儿,这个多态性,我们说编译看左边,运看右边,这个事儿呢,只适用于方法,不适用于属性啊,这个属性的话呢,我们说编译和运行哎都看左边,而它的话呢,是诶编译看左边,运行时候看右边,这个是咱们说的这个问题啊,大家呢得清楚,也就是呢,他们在这个我们在这个多肽的使用前提上呢,只说方法的事了,根本就没有说属性的事。
04:25
就是多态性这个方面根本跟属性就没有关系啊,大家就知道这个问题就可以啊好。
我来说两句