00:00
好了,同学们,咱们super这块呢,还有还有还需要给大家演示一个例子啊,Super test07。那TEST07这块呢,我们public class,我们叫super test07啊publicman。这呢是这样,在这里呢,有个animal,各位看好了,Animal里边有一个方法叫move,这个很简单的一个方法是不是,哎,我们叫什么叫做animal move啊,叫animal啊,非常简单,写了一个子类,这个子类叫K去继承谁啊,我们的animal继承了我们这个animal之后啊。之类啊。Cat去继承这个animal,继承之后呢,对move进行重写啊,对这个move进行重写,那我把这个方法呀,我复制过来,然后我贴过来放到这儿,接下来我这边叫cat move。
01:08
然后呢,我在这里单独编写一个方法啊,单独编写一个子类特有的方法,我这个方法怎么写呢?我这个方法我就随便写了啊。呃。这个方法就叫移动吧,啊,汉语拼音啊,移动大家能看懂吧,移动啊,我现在想在这里干什么呢。调这个move方法各位啊,this.move和move还有super.move有什么区别各位?就是super点后边不仅是可以访问属性啊,也可以访问方法。这里说一下啊,Super不仅可以访问什么。
02:03
属性也可以访问什么呀,方法super move。你看this move move super.name呃,super.move你说这个程序,如果我在这new一个cat出来,Cat c new cat new完K之后C点什么移动,嗯,移动。对吧,那这个输出结果会是怎样的呢?各位猜测一下呗。我现在重写了,我在这儿。子类重写父类的方法,把父类这个方法重写了,覆盖了。This their move move super super move。Cat。Cat move。好,首先这个吧,这个调的move方法是哪个是就是cat move吧。这个move呢,这个目前面如果啥也没有的话,会自动添加什么this点吧,所以跟上面是不是一样啊,那么这个super.move呢,是不是就会输出animal move啊。
03:12
是不是你你你你这样的方法重启了,但是你你的负类里边有这样一个方法,那这个程序的执行结果是啥呀?两个K,第一个K,第二个还是K,第三个是animal是吧?来我们看一下啊Java c编译一下super test07.java然后Java去运行super test07走。好,大家看最后的输出结果,是不是我们猜测的就是这个结果呀,Catt move can't move and move。是不是,哎,这个结果是这样的,各位啊。是这样的。那我再问大家一个问题啊,如果说我把这个方法注释掉会是怎样?只有复类当中有这个方法,这地方这三个结果一样不一样。
04:00
一样吧。你无论是this.move move还是super点,呃,Super move这个是不是说的都是这个方法?所以你看这个程序编译,你看就通过运行,你看就animal move move是吧,哎。也就是说跟那个name是一个效果。如果腹中有,子中如果也有的话,如果你想在子里边,不想访问这个子当中的方法,想访问负里边这个方法,你就得加super点。是一个道理,各位啊,是一个道理。一个道理啊,跟属性一样,跟属性一样。啊,就是这个super呢,代表的就是复,你就这样理解,Super代表的就是复,我现在我在子里边和父里边重了就是重了东西,你看有move,我这边也有木吗?我现在我只想我在子里边干啥,我不想访问这个木,我想访问这个木。怎么做super点?
05:00
加以区分,这样的话就可以了。还是那句话,大部分this点,还有这个super点都是可以怎么着省略的。只有当你腹中有,子中有,我再声声明一下啊,腹中有一个,子中也有一个,你想在子里边访问父的东西。用点。这个程序的执行结果就是这样的,目前是这样,Move move move。因为这个是cat move嘛,这个是自己的嘛,这个是不是也是自己的,然后下边这个super move呢,是不是就是指的是这个呀。但如果说你把下面这个删掉,那对不起,你下面this move move和super super move这几个都是同一个啊,都是同一个,还是那句话,各位啊,跟那个属性是一样的,跟那个属性是一样的。就是说,就是在父和子中有同名的什么属性,或者说。有有什么呀,有相同的方法。
06:03
啊,如果此时想在子类中访问什么父?中的。数据必须使用super点加一。区分啊,Super点加以区分是这样行了,那到此为止吧,各位,咱们的super这个关键字啊,咱们就讲完了,各位啊,整个这个super这个关键字就说完了。那无非呢,我在这里再总结一下各位啊,Super呢,它有两种用法,要么super点某某某,后面加什么属性名是不是,要么super点后面加什么哎方法名,然后跟什么哎食餐啊,要么就是括号。对吧,跟上十参是不是,那这个其实就是访问什么呀,哎写上啊叫访问负类的什么,哎属性,然后呢,这个其实就是访问什么呀,访问副类的什么方法,这个呢,其实就是调用什么副类的什么构造方法啊,这是调用负类的各个方法,这个呢是访问负类的方法,而这个呢,是访问复类的属性,访问负类的属性。
07:14
啊,是这样的一个一个情况,各位啊,要么super点后面跟的是属性名,要么super点后面跟的是方法名实参,要么就是super括号,括号里面跟什么呀?跟一个实参,这是通过子类的构造方法去调用父类的构造方法,得用super括号的方式啊,就是括号方式。行了,那到此为止吧,咱们super就结束了,第14章咱们也就结束了啊。
我来说两句