00:00
大家好,我是海波老师,接下来我们继续来讲Java面向对象的语法,我们这里呢,来拷贝代码,我们来拷贝啊,写上一个我们的13,然后呢点击OK就可以了,然后呢,把里面的东西啊,咱们全都删掉。前面咱们讲过了,在Java中创建子类对象的时候啊,父类对象就已经创建出来了,而且啊,咱们之前给大家画图的时候,我们把这个父类对象的这个内容啊,画到了我们子类对象当中,为什么这么画呢?因为我们说过我们父类啊,它被子类继承之后,子类包含了父类的所有内容,所以从内存的角度来讲的话,如果我们的子类把父类包进去,不就恰恰体现了它包含了它的所有内容嘛,对不对?所以咱们当时就这么讲的,我相信这种方式呢,大家还是好明白的,那好,我们接下来给大家创建一个副类,咱们想想它叫class。我们写上叫person好了,接下来呢,我们再创建一个类,我们称之为叫做boy,那么这个boy呢,就是男孩嘛,那男孩也是个人呐,所以我们写上继承,我们叫person,好,放过来,那男孩有了以后,我接下来呢再写个女孩,我们叫做girl,然后呢,我们同样继承咱们的person就可以了,好了,我们的一个父类,两个子类我创建好了,我接下来呢,就要创建一个对象了,好了,那我现在呢,我就创建一个人啊,干嘛呢,我准备让他帮我拿点东西,所以我写那个person,我写个P啊,然后等于new我们的portion,诶,我就放过来就行了。
01:18
左边这里呢,就表示我现在需要一个人,右边这里就表示我准备好了一个人,很简单,对不对?我现在就需要有个人呢,帮我拿点东西,很轻,几份文件就可以了,所以呢,我们现在这么写是没有任何问题的,但是大家想一想,我说我需要一个人帮我拿几份文件,我没说别的什么身高啊,体重啊,力量啊或性别上的要求,我没说吧,那是不是只要是个人就可以了,哪怕其实是个小孩是不是也可以啊,就拿几份文件嘛,对不对?那我随便来个什么男孩女孩不都可以吗?所以啊,咱把这个代码我改一下干嘛呢?我们来,我把咱们的这个boy呢,我放到这个地方,我来一个男孩啊,诶,我写个P,同学们会发现这报错了吗?这好像没有任何的问题吧,对不对?好,这没问题的话,我们再给他来复制一个,我写上一个P2,我把这个女孩的girl呢,我们也给他拿过来,诶,也没有任何的问题,这是为什么呢?告诉大家,我们这种代码编写的方式就体现了Java面向对象中另外一个非常重要的概念,我们称之为叫做多态。
02:22
所谓的多肽啊,其实就是一个对象在不同场景下所表现出的不同形态和状态,所以咱们这里说一下。所谓的多态,它其实啊,就是一个对象在不同场景下表现出来的不同状态和形态。这就是所谓的多肽,那怎么理解呢?很简单,咱们说了子类继承父类,就继承了父类的所有东西,咱们画图的时候,不就将父类对象画到了子类对象当中嘛,就表示子类对象包含了父类的所有内容,那既然子类包含了父类的所有东西的话,当我需要一个父类对象的时候,我拿一个子类对象,那肯定没问题嘛,为什么呢?从内存的角度来讲,我全都有吗?不就是这个意思吗?只不过我把当前的对象我当成了负类来用,对吧?这个能不能理解啊?同学们,换个角度说,一个子类对象在需要负类对象的时候,就会作为负类对象使用,在需要自己的时候呢,就做自己就可以了,这就好比啊美国电影中的那个超人一样,平时呢,是个记者,一旦出现危机时刻,就到电话亭里把内裤穿到外面,变身超人,利用自己的超能力开始救人了。你看。
03:34
人是同一个人呢,但是场景不一样,他表现的形态不就不一样吗?没有晰机的时候就表现为普通人,那么有危机的时候就变身超人,对不对?展现超能力,这就是多态的体现呀,这种方式带来的效果呢,其实就是约束了对象功能的使用场景还是超人的例子,如果普通生活的场合的话,你说你能表现出你的超能力吗?不能吧,为什么?因为普通人就吓坏了吧,可能报警就把你抓起来了,所以啊,这其实就是一种约束,但是这种约束我们怎么体会呢?这里给大家看一看,比方说呀,我们在person里面给它写个方法,叫做VO,然后写上一个test,咱们叫person,好,然后呢,我写个打印一句,我们就写上它就叫test person就可以了。
04:18
好了,我写完以后呢,诶,我们的port就有一个方法了,我们的boy和这个girl呢,就会继承这个方法,他们两个也都有了,所以呢,我们这里写上p.test person没有问题,而且呢,我的new boy它里面也会有吧,所以我写上它咱们叫p.test person没有任何的问题,然后呢,我们这里写上它我们叫p2.testperson也都没有任何的问题,对不对?所以我现在运行一下看结果。运行以后你就会发现三个person完全相同,没问题吧,但是呢,我们的boy是男孩啊,他的力量会相对说强一些,对不对?所以呢,他有自己的功能啊,我们叫做VO,我们就要test boy好了,写完以后在里面呢,我们打印,然后呢写上叫test,我们叫做boy,然后呢,点开我们的女孩有自己的行为啊,所以我写成word叫test girl。
05:07
行了,写完了之后我打印一下,然后呢,我写上叫test,我们叫做girl就可以了,那么我们写完了之后,我就准备去调用一下了,我们这里不是叫new boy吗?我们的一个对象啊,那它里面有个方法,那我这里调用一下吧,我写上叫P点,我叫test。诶,有没有发现我们的idea呢,给我们标红了,那好,我们再写上一个叫PR,点一下,我们这里呢,写上叉叫test girl有没有发现我们这也会标红。哎,老师,这是为什么呢?你的对象不就是boy,你的对象不就是girl吗?那么里面的这些方法不就应该能用吗?为什么我们当前的这个地方我们怎么用不了呢?这个是什么原因导致的呢?这里给大家解释一下,这个就是我们前面给大家说的。我们的多肽语法,它其实就是起到了一个约束的作用,它把一个对象它的使用场景进行了约束,所以我们说一下多肽语法,它其实它就是对对象的使用场景它进行了约束,进行了约束。
06:13
这个大家能不能明白,也就意味着一个超人在普通生活场景当中,你只能表现的像个普通人,你的超能力是绝对不能体现出来的,对不对,除非什么呀,除非你在特殊的时候你变成了自己啊,所以大家看一下,我写上一个boy,我现在需要一个男孩儿,为什么需要男孩啊,因为他的力量强啊,所以我的这个时候呢,我们去调用他自己的功能不就没有问题了吗?所以叫testbo,你这么写就可以了,所以啊,咱把这个注掉,你入掉以后,诶我们现在运行一下,就会发现我们当前的这个boy呢,就可以打印出来了,没有任何问题,对不对,同样道理啊,如果那个需要个女孩的场合呢,诶,把这个女孩拿过来叫做new girl,然后呢,我的girl,然后点一下叫test girl,你看不也就没有问题了吗?我们点击运行啊,所以呢,我们这种多态的语法呢,其实就是用来约束使用场景的,在不同的场景下,同一个对象它所表现的能力是不一样的,所以呢,这里咱们接着说啊来。
07:13
一个对象它可以使用的功能,它取取决于引用变量的类型。好了,同学们,我们多肽的语法呀,咱们就先介绍到这里。
我来说两句