00:00
好了,同学们呢,咱们接下来开始上课,我们上午呢,学了什么内容啊,我们把这个课堂笔记再打开啊,第18天的笔记。那么上午呢,我们最主要是给大家讲解了,在Java语言当中,多态开发有什么作用啊,这个作用的话,大家要注意是降低我们程序的耦合度,提高我们程序的扩展力啊,这是一种思想,这个思想呢,其实比较难以理解啊,难以理解。呃,那么这块的话咱们呀。呃,慢慢的以后啊,在做项目的过程当中,再去体会这个多肽有什么好处,好吧,现在的话,你可能就是说只能听杜老师讲一讲,哦,降低耦合度了,提高扩展力了,是不是到底怎么降了,怎么提高了,是不是这块可能啊不太好理解啊,不太好理解,因为这这不是一个知识点,这是一种思想,尤其是一种开发原则,七大原则当中最基本原则OCP。对扩展开放,对修改关闭,也就是说你可以对我们程序进行扩展,但是你在扩展的过程当中修改了我Java源代码,我觉得是不允是不允许的啊,不允许的,那么大家以后要注意面向抽象编程,不建议面向具体编程啊好,那么这是我们上午呢第一个内容,第二个内容呢,就是解释我们之前遗留的一些问题啊,因为之前呢,我们有一些问题解释不了啊,我们讲了多肽之后,我们这些问题就可以解释了啊,就可以解释了,在这里呢,我们简单解释了一下,那么再往下呢,第三个知识点呢,我们讲解了super关键字,但是super关键字还没有讲完。
01:32
我们今天下午的安排呢,是这样啊,把这个super关键字呢,我们学好,然后把它学完,学完之后呢,接下来把我们之前遗留的所有的作业题,我们呃,我们给大家讲解了啊,讲解了然后整个呢,这个叫。叫什么课程呢?这个有同学老师这个文档怎么是从第一章到第14章,第15章往后就没了吗?是这样的,第一章到第14章这是什么呀?这是,呃,这个课程就是就相当于是绝对零基础就算入门了啊,绝对零基础的学生就算入门了啊,入门了呃,那么再往下呢,明天再讲解的一些课程,那就属于进阶了。
02:07
进阶你懂什么意思吧,就不是那种,呃,不是那种就特别零基础的东西了啊,零基础东西,这是零基础的东西啊,零基础东西好,我们今天下午呢,就在这里呢,画一条线啊,之前呢,我们算是绝对零的,就算结束了,然后下节课我们就开始进入Java s1进阶了啊进阶就是这个意思啊。行吧,那咱们先回顾一下这个super关键字,我们上午都说了什么好不好,哎,Super这块啊,我们把这个,呃,还得把这个我们的一个例子打开啊,在我们CHAPTER14这个目录下,我们看到的这块有什么呀?有我们的一个,呃,Super test01和TEST02,我们把super test01打开,打开之后呢,我们在这里啊,来看一看我们这里需要记忆的一些东西,其实怎么说呢,我觉得大家不要去死记硬背,这个东西呢,怎么去理解,我建议你可类这一块,诶,给它对比着学。那么this这块你知道它能出现在实例方法对吧?哎,实例方法和什么呀,我们的一个构造方法当中,那我们super同样也是一样,This的语法是this点和this括号,This点是用来调用this括号来调用构造方法的,This不能使用在静态方法当中,This点大部分可以省略,什么时候不能省,像这种情况,区分局部变量和我们区部这个局部变量,区分局部变量和这个实例变量,我们是不能够省略的。
03:29
然后呢,This括号。只能出现在构造方法第一行,通过当前构造方法去调用本类,本类啊,本类中其他的构造方法目的是代码复用,那我们的super呢?Super能出现在什么呀?我们的实例方法和构造方法当中,这个和this一样,Super的语法是super点和super括号,这个和this也差不多,因为this是this点和this括号,那么再往下super不能使用在静态方法中,诶,This也是不能使用在静态方法中,然后我们super点大部分可以省略,什么时候不能省,这个我还没有讲对吧?Super点什么时候不能省略我们还没有讲啊,然后再往下呢,Super括号,我们今天上午着重的去给大家讲解了super括号,这个super括号呢,其实就相当于通过此类的构造方法去调用负类的构造方法,而且它的代码也只能出现的构造方法第一行,并且呢,它的目的是创建子类对象的时候,先初始化负类型特征啊,先去初始化分类型,其实模拟的我们现实生活当中要像有儿子。
04:31
得先有父亲这样一个道理啊,这样一个道理,要知道我们的this括号,还有我们的super括号。好的,还有我们super括号都是只能出现在构造方法第一行,并且两个不能同时出现,这个就是废话,因为都出现在第一行,那你当然不能两个同时出现,是不是都是调构造方法,只不过一个是调本类的,一个是调负类的构造方法啊,然后呢,我们在这里呢,就给大家演示了一下我们的代码执行顺序,紧接着呢,我们在我们的第二个例子当中,诶,我又进行了一个考核,那么最后的结果是13654它的输出结果,当时我也给大家提了一下站的这种数据结构,对吧,先进先出,先进后出后进的先出原则啊,后进先出原则,那么大家要注意,在我们Java源当中,我们但凡是new一个对象,Object这个类当中呢,无参数的构造方法,100%的会执行。
05:30
100%会执行啊,而且是最后调用的参数构造方法,并且是它最先结束啊,并且是最先结束啊。这是一个站的数据结构,各位啊,站的数据结构。嗯。最先调用,最后结束。对吧,然后呢,Object这个是什么?这是最后调用,并且它是最先结束啊,是这样的,另外我在这里还给大家说了,当一个构造方法第一行如果什么也没写啥意思,你既没有在这写this括号的这种语法,你又没有在这写super括号的这种语法,我当时说了,我说这块啊,它会默认会有个super括号,而这个super括号是用来调用负类的无参数构造方法,所以呢,在这里大家也能够呃理解一个问题,为什么当时我在给大家讲的时候,建议大家把无参数构造方法写出来啊,如果你这个无参构造要没有的话,会出现什么问题啊,昨天有好几个同学问我老师,我这个程序执行不了怎么回事,我一看他的代码就知道哦,你这个类的无参数构造方法没有提供。
06:36
啊,你没有提供,他只提供了一个有参数的构造方法,大家都知道有参数的构造方法存在。那么会导致无参构造就没了,无参构造没了,下边这个子类在创建对象的时候就尴尬了,因为子类啊,它的构造方法第一行有super括号,而super括号会调用负类的无参构造方法,你附类里边有一个有参的无参就没了,所以这个程序很尴尬,就编译就报错了,来Java c,我们编译super test02.java。
07:02
好,大家看这个程序就有问题,这个39和四十三都出问题了,你把这个呢给它去掉,去掉之后呢,接下来你再编译这个程序就没有任何问题了,是不是啊,那原因是什么呢?是因为我们在这里有一个规定,什么规定,就是我们构造方法的第一行,如果什么也没写,诶,This括号你没写,Super括号你也没写,它默认会有一个什么super括号表示调用负类的构造方法,总之呢,大家要知道,在我们构造对象的过程当中,它负类的构造方法100%,200%,它都是执行的,没有任何问题啊,就是我们只要叫构造方法,一定会去执行我们当前的构造方法,以及什么呢?它负类的构造方法一定会掉,你就算这里没掉,它掉了这里对吧,你就算这里没掉,它掉了这里,它掉了这里,就算你这里,诶你看。到了是不是还是掉了,是不是倒了,是不是还是掉了,负类的构造方法是不是有同学老师我就不掉,我就不掉,我不写不行吗?不写它也有一个什么super括号,只不过调的是什么负类的无参数的构造方法,所以大家注意啊,在编写程序的时候,建议手动的将无参数构造方法写出来啊,我在此再声明一次啊,再声明一次,在这儿再唠叨一次,大家呢,也别嫌我啰嗦啊,我就直接说了啊,大家要注意了啊,大家要注意以后啊,写代码的时候。
08:29
啊呃,一个类的无参数构造方法,还是建议大家手动的写出来啊嗯,如果你没有,如果无参数构造方法丢失的话,可能会影响到什么呀,影响到子类对象的构建啊,子类对象的构建就是你最终可能会影响到子类对象的一个创建问题啊好,那么这个呢,我们就说到这儿,这算是一个回顾吧,各位啊,就是把今天上午的内容我们又回顾了一下啊,又回顾了一下。
09:06
Super关键字啊。
我来说两句