00:00
大家好,我是海波老师,我们继续来讲Java面向对象的语法,那我们这里呢,先拷贝我们的程序来复制,复制以后把它改成我们的15,把这个去掉,去掉以后我点击OK,然后呢,把里面的东西啊,咱们全给它删掉就可以了,好,这里面呢,我们也都全删掉啊。行了,那么之前啊,咱们讲到如果父类呢,有一个属性,子类也有一个相同属性的话,我们想要区分呢,可以采用我们的两个关键字,一个叫做this,一个叫做super,我们这里呢,再来演示,演示我们写上class,我们叫做我们叫做15,然后呢,放过来,我们写上叫class,我们再来给他一个child,我们写上15,然后呢,接下来呢,把它放过来,我们就要PARENT15就可以了。好了,写完了之后呢,同学们看一下,我们在这里呢,添加一个属性叫做this,然后呢,写上一个name,它等于张三,好了,接下来呢,我们在子类当中,我们也添加一个属性,我们叫做string,我们叫name,它等于李四。哎,这样的话呢,我的父类和我的子类不就有相同的属性了吗?对不对,我们说了,如果想区分的话,就得用this和我们的super,所以呢,我在这里呢,写上一个word,我们叫test,写完了以后,我这里打印一下this name,好再来一个,我们写上它,咱们叫做super。
01:18
可以了,那么写完以后呢,我在这里呢,给它创建对象,咱们叫15,放过来,咱们叫child,它等于new child15可以了,接下来呢,Child我们点一下叫test,我们写完了之后,我们现在运行一下,看结果没有任何的问题,我们的张三和李四应该是出来了,对吧?OK,那这样的话,如果没有问题的话,如果我们的父类和子类都有一个相同的方法,那行不行呢?啥意思啊,就是说你这个父类中有个方法,我们子类中有一个一模一样的方法行不行,那好了,我们现在呢,在父类中我添加一个方法叫VO,我叫test OK,把它放过来,放过来以后大家会发现没有任何的问题,我们这有个test,我们这是不是也有个test呀,说明这两个方法是一模一样的,诶老师啊,那现在如果你调这个test的话,那么走的是我们的他呢,还是我们的他呢?我不太清楚了,所以呢,我们来给它打印一下,来写上它,咱们写上叫parent,叫test,点点点,然后呢,把这个我们拷贝一下,拷贝以后呢,我放到下面来,然后把这个给它去掉。
02:25
把这个写成他,我们叫child,你这么写完了以后,同学们你要注意了,我们当前一个叫parent,一个叫做child,那现在我们执行执行以后,你会发现我们当前的这个地方,我们就叫child test没有任何的问题,对不对,诶老师呀,那不对了,我现在如果想调这个怎么办?其实啊,也可以采用咱们的super,大家看一下,你写上叫super点,我们写个test也是完全可以的,为什么可以啊,就是因为我们super就表示我当前对象的负类对象,也就意味着我当前的子类对象中,我的super就指向了它,我指向它的话,里面的这个方法我肯定能取得到啊,所以我现在运行,运行以后看结果。
03:10
诶,你会发现我们当前的parent也能执行,我当前的child是不是也能执行啊?诶,可是很奇怪啊,同学们,我们使用继承的目的就是为了减少代码的执行,那为什么我们父类写了一遍test的,那么为什么还要在子类中写一遍呢?那么这里告诉大家,确实是这样的,我们继承的目的就是为了将父类的这些东西啊给我全拿过来用,但是你要记住啊,可以有很多的类都继承这一个类呀,也就是说这个方法放在父类中的目的啊,其实就是因为它具备了共同性,所以呢,我们都能拿过来用,但是恰恰因为它的共同性,所以就导致它无法针对于特殊的情况做具体的处理,那怎么办?那就只能子类呢,把这个方法的逻辑啊,我重新再写一遍,为什么呢?在特殊的场合下,他已经不适用了,不就是这个意思吗?所以啊,这种重写的操作在咱们Java语法中就称之为叫方法的重写,所以咱们这里说一下,咱们叫方法的重写。
04:10
那么怎么理解?还是那句话,我们负类对象的方法,其实它主要体现通用性。那么也就意味着他无法在我们特殊的场合下使用,如果子类对象它需要在特殊场合下使用,那么就需要重写方法的逻辑。这个操作在Java中。称之为方法的重写。所以呢,这个咱们就说一下,它叫做重写,但是呢,我们也需要注意啊,这里的重写并不意味着。负类的方法被覆盖掉。只是在当前场合它不适用。如果使用super关键字,还是可以访问。
05:01
所以我们这里采用super的关键字来调用我复类的方法,因为在当前场合下,复类的方法已经不适用了啊。好了,方法的重写的概念呢,给大家讲了一下,那么有哪些需要注意的地方呢?首先第一个就是怎么叫做子类把父类方法重写呢?那么首先我们就需要说一下我们的方法的重写,它要求。子类的方法和父类的方法要。人的方法。我们的方法名相同。返回值类型相同以及参数列表,它要相同,要相同。为什么呀,因为我为什么可以重写你呀,就是因为咱俩是一个方法呀,那么怎么体现出一个方法呢?名字一样对吧?第二个呢,咱们从外部传过的参数是一样的,第三个返回的结果的类型要保持是一样的,对不对?你如果说不一样,咱就不是同一个方法,那你怎么重写它呢,对不对?不就是这个意思吗?除了这些以外,还有两个地方需要注意,不过这两个语法呢,我们现在还没有学啊,咱们先说一下,一个就是访问权限,还有一个就是错误啊,这个咱们知道就行了,因为后面我们会有专门的章节来讲错误的问题,那最后呢,咱们再说一下,就是构造方法,它是无法重写的,为什么?因为它的名字就不一样嘛,名字都不一样,你怎么去重写它呢?所谓的重写就是我把你的逻辑重新的写了一遍,那咱俩的相同我才重写嘛,大家都不是一个方法,你咋重写呢,对不对,这是一个最基本的原则啊。好了,同学们,我们方法的重写就先说到这里。
我来说两句