super 关键字的使用?提到 super 关键字,我们自然的想到了与 super 关键字类似的,我们之前学过的 this 关键字, 其中类似代表的是自身对象,也就是类本身这个对象,那么通过类似加点加方法名,就可以调用 类里边其他的成员方法。通过 z 次加括号里面跟的是 构造方法的参数,就可以调用类当中其他的构造方法,这个是我们以前讲 this 关键字已经学过的, 那么今天我们要学的 super 关键字,他和 this 对象很类很类似,他引用的是负类的对象,负类对象, 那么同样他也有两种使用方法,一种是通过 super 加点加方法名,这个调用的是负类的普通的成员方法, 那么 super 加括号里边跟的是构造方法的参数,调用的就是负类的 构造方法,也就是说使用 super 关键字可以调用负类的方普通方法以及构造方法。 那么大家想为什么需要用 super 关键字来调用,我们直接通过方法名来调用可不可以 啊?那么这里大家要注意,那 super 关键字使用的时候,往往都是因为子类 把负累的方方法给重写了,而我们又想调用负累的方法,这时候就不能直接通过方法名调用了啊,需要用 super 关键字加这个方法名,同样, 那么我们想调用负类的构造方法也需要用 super 关键字 啊,这里也有标注啊, super 用来引用负类中被覆盖的方法,被隐藏的变量及构造方法啊,这里可以是方法,也可以 历史成员变量都是被隐藏的,那么这四个 super 可以调用当前对象或负类对象的构造函数, 也可以调用过道函数。下面我们就通过一个例子来介绍 super 关键字在具体应用中的使用。 打开一个 lips, 我们新建一个工程,取名叫 super demo, 在 src 目录下,我们创建一个负累, 来自类课程类啊,来,来自 这个课程里, 在课程类里边我们包含名字, 课程的名字 包含一个构造方法,给这个课程名字复职,复出职, sauce generate, constructor, using fields, okay, 好,大家注意看啊,之前我就讲过,在这里它会自动出现一个 super 括号,这个呢就是调用它负类的构造方法的意思。那么为什么这句话我们可以加也可以不加呢?因为 系统在创建此类对象的时候啊,如果我们要创建这个来分类的这个对象的时候,那么会调用来分类的构造方法,那么调用构造方法的时候,他会默认的自动去调用负类的无参的构造方法。 那有的同学说我这个类没有负类啊,啊,不要忘了,大家不要忘了啊,我们知道所有的类在家里都有一个负类,就是 object 类啊,所以说它相当于是调用 object 类的无餐的构造方法 啊。那这句话写,因为那个无残酷的方法里没有任何内容啊,所以写不写都可以,但是大家要知道他会去调用 好,然后我们再写一个普通方法, 出方法, 输出我们的名字。 好,这个是我们的负累啊,我们的负累来分类,然后我们在这个包下,我们再创建一个子类, 这个我们叫加瓦 class, 加瓦莱森啊,加瓦莱森,好,注意,我们要选中他的负累, 好,把这个 let 选上,然后我们测试类也放到这里,把这个内函数也给选上,真的是 好,然后我们在这个类当中我们再添加一个成员变量, 添加一个叫特点 啊,我们这课有什么特点?添加个特点好,然后呢我们添加构造方法, 给这个特点进行复制,那么同时呢,我们要把复类继承来的这个课程名也给他复制啊,我们看一下怎么操作啊,我们先用右键的方法来操作 啊,那么我们是看不到那个名字啊,刻成名的,我们点 ok, 好,大家会发现在我们的这个添加的这个构造方法里,他会自动的帮我们添加一个有一个参数的 super 啊,有一个参数的 super 啊,那么刚才讲过了,这个是调用负类的构造方法,那么负类的构造方法是什么呢?你看一下 他的复利购房方法,就是这个莱森,对吧?调用的就是 zz 加内幕,等于内幕,就是给我们的这个 课程名字进行复职,那么这就是 super 关键字调用负累构造方法的一个实际的例子啊,我们写也要这么写,而且呢要大家要注意啊,这句话必须 必须写在写在 第一行啊,必须要写到第一行,跟这次关键字的用法是一样的,必须要写到这个这个函数的第一行,也就是第一个可执行的语句 啊,这个就是 super 关键字的第一个用法啊,调用负类的构造方法。好,那 第二个方法呢?我们知道 super 关键词还可以调用负累的普通方法,好,那么我们再写一个方法啊, public, 我们再写一个受方法,那么上节课讲过啊,那么这个受方法, 他的名字参数以及返回之类型都与负类这个方法一致 啊,那么这个我们叫做方法的重写,也就相当于覆盖了啊,把负累的方法给覆盖掉了,那么我们再调用瘦方法的时候,调用的就是子类的这个瘦方法,那么在子类的瘦方法里,我们可不可以用一下腹类已有的这个瘦方 方法呢?比如说这个课程名称,我们也也需要输出啊,那么完全是可以的啊,那么怎么用呢? super 点儿,然后看这时候他就出来,你看这个方法属于 lesson 这个类,看没看见?看没看见,属于 lesson 这个类。 什么意思?属于负累,通过 super 来调用,调用的就是负累的瘦方法了。 好,调用完复列的说。方法以后,我们再把我们自己的方法加上去啊,我们有一个这个特点, 我们这个课有什么特点啊?这个 加上这个特点,好,这两种方法啊,修配了两种 用法,我们都给大家演示了啊,一个是调用负累的被覆盖的方法,一个是调用这个构造方法 啊,那有的同学说没有被覆盖的方法,能不能用 super 调用呢?也是可以的啊,但是没有必要,因为我们都继承来了,我们直接用方法名就可以调用了,就没有必要再写这个 super 关键字来调用了。 好,这个是就是用法啊,下面我们测试一下,我们创建一个子类对象, 加班来分对象 这个参数,一个是课程名称, 一个是特点三教改革的课。 好,然后我们调用这个瘦方法。 好,你看它属于此类的啊,属于此类的。 好,我们运行一下。 好这个课程名称加吧。呃,特点三角改革啊,都已经出来了,那我们再回头看一下这个过程啊,当我们创建子类的 对象,调用子类的构造方法的时候,他会找到我们子类的构造方法,那么在子类的构造方法里,我们又调用了负类的构造方法, 调用了负累的构造方法,从而给课程名字进行了铺式化。然后我们回来再把这个课程特点也进行了铺式化 啊,这是调用构造方法,然后我们调用的普通的方法的时候,我们在普通方法里也可以调用负累负累的普通方法, 然后再写我们自己的方法。这个就是我们 super 关键字的用法啊,大家可以把它跟类似关键字结合着对比着进行继续掌握。同学们,你们学会了吗?