00:00
好,那么接下来呢,我们在这里呢,出一道题目,各位啊,出一道题目,我不知道大家有没有记住这个结论啊,就是说。说什么呢?说这个,嗯,咱们这个super括号这块啊,有没有有没有记住,就是说当你一个构造方法第一行啥也没有的话,它会默认调用复类的无参数误导方法,当然如果你要有一个这个括号,那就不掉了,你要有一个super括号,它也就不掉了。啊,但不管你怎么折腾嘛,你创建子类对象的时候,总有一天你会肯定会先去调负类的构造方法。啊,调付的构造方法执行完之后呢,再去轮到子类的构造方法执行啊,模拟的就是要先有儿子,先得有父亲的这个道理,This括号跟修复括号不能共存,记住吧,啊,This框和修复括号不能共存,都是只能出现出现在构造方法的第一行,第一行啊,一个是通过本类的构造方法去调用,另外一。本类当中的一个构造方法,一个是通过子类的构造器调用类的什么哎,构造方法啊,是本类的构造方法。调用复类的构造方法。
01:00
是本类的构造方法去调用负类的构造方法,负类先执行完,对呀,没没毛病啊没毛病啊没毛病,来咱们咱们看看题目。Public class super test02来,Public static voidman。那这块呢,我就出一些题目,各位啊,比如说我现在有个A。然后呢,我在这儿呢,有一个B。B呢去继承A,然后呢,在这呢,我有一个CC呢去继承B,然后接下来呢,我在这块啊,我有一个无参构造。啊,无参构造,然后无参构造呢,输出一个什么呢?哎,叫A的。无参数构造执行,然后这一块呢,我也提供一个构造方法,是无参的,然后这个叫什么呀,叫B的什么呀,无参数构造执行,然后C这块呢。
02:11
嗯。C这块呢,有一个无参构造,这个无参构造呢,这呢还有一个什么呀,C的有参数构造啊,String name,然后system.out.line打印输出我们叫做C的什么有参数构造,执行这个参数的类型是什么呀。String,然后接下来在下面的还有一个构造是string name和in类型age,接下来是system.out print line打印输出,我们叫C的有参数构造,执行参数是词string和int,然后接下来在这块呢,我有一个什么呀,哎,This括号,然后紧接着呢,这边有个什么呀,叫张三。然后接下来我们在这块呢,system.out print打印输出我们叫什么呀?叫C的什么。
03:02
无参数构造执行。啊无参数过导执行,那么接下来我们这块呢,调用我们C之后呢,我C这边我们Z括号,然后这边这边把这个name传进去,然后呢,传一个20。好,那么接下来在这块呢,大家注意看啊,是C有个无参的,然后呢,通过this次括号调的谁呢?调的它掉的他他呢这块呢,怎么着又调的这个是不是啊,那么这边呢,哎,我们写上什么呢?一个super括号啊,写上一个什么呢?这个name,然后接下来在这块呢。有一个什么呢?有参数的啊。System out打印输出,我们叫B类的,有参数构造,执行参数的类型是什么呢?是string。然后接下来我们在这块new c,你告诉我这个执行结果是啥。
04:04
6C啊,执行结果。给点时间啊,大家分析一下new c执行结果是啥,就输出顺序,顺序是什么告诉我。行,我在这我这样,我在这标个号,我在后面标个号,加个号123456,然后你你看输出结果是啥。6C。或者这样,咱也别写了,这这写一吧,这写二,这写三。行吗?然后这写四呗。这五呗。行不行?123456。
05:00
New c执行这个这个执行谁。就用这个吧。这个又指行谁?就用这个吧。这个追谁啊?这个吧。哎,这个第一行有个啥。是吧,这又去指定谁啊他吧,所以先说出一对吗?然后三是不是。然后是六吧。60完乳吧。五完了之后是不是四啊。没有的事,对吧。13654对不对。哎,13654啊。好好理解一下6C。你看你走的这个吗?这不走这个吗。是不是这个不就走的他吗。
06:00
他走的谁啊,这个吧。是不是这个是走这个super super name吗?Name这块走谁呀。就他呗,他的第一行不是有个super括号,啥也没写一个super括号吗?是不是啊,有括号。然后呢?修复括号不是指定这个吗?就是一呀,先先是一一完事之后就轮到它了,三。对吧,一三之后呢,这边这这个就结束了,这结束之后呢,是6136是不是,哎,然后紧接着这个结束之后,代表这个就结束了嘛,这个结束是五嘛。对不对,哎,这个结束之后呢。这个结束之后呢,就代表这个结束了呗。这一行结束了,这行结束,就这个呗。13654对吧,来。A,也是午餐啊,Java c编译super test02.java然后Java去运行SUPER02走。
07:03
1364。13654各位啊,这个输出结果就判断程序的输出结果啊,这个结果是13654。13654。好,你能把这个13654这个顺序说出来,这证明你对super括号呢就掌握了,各位啊,就是如果你构造方法第一行什么也没有,你切记啊,这边还有个super括号呢,这边其实也有一个super括号,这边其实也有一个什么super括号。啊,这个都有修复号,你不写它也有,下边这个就没有修复括号了,为什么这里没有了,因为这有个this括号,我说this括号修复号不能共存,然后呢,这边也也有this括号,所以这块呢没有super括号了,各位啊,因为super框号this括号不能共存,然后再往下这有super括号是不是啊,那你再往下就不能写this次括号了,因为这次括号和super括号不能共存。
08:00
总之总之我们通过讲解大家看到我们要想创建一个子类对象,它首先呀调子类的构造方法,其实子类构造方法在执行的时候,他会先去调什么呀,负类的构造方法,那负类其实还有负类,负类还有负类,实际上。你从这里还能得出一个结论,就在Java圆中,在Java元中,不管是创建什么对象,Object的构造方法一定会执行,对吗?来,大家看看,我听我这个结论啊,这个结论是否正确,就是在Java语言中,不管你是new什么对象啊,最后老祖宗的object类的无参数构造方法一定会执行。你好好想想是不是这样的,就你创建C的时候,实际上要创建B,在创建的时候你得先创建AB,你创建A的时候,实际上它上面还有个老祖宗叫object object那里的构造方法也会执行的,只不过那个构造方里边什么没有打印,没有打印你在这看不出效果,你在这是看不效果的,实际上那个老祖宗object那个类里面无参构造方法是执行的。
09:11
啊方是行的,各位要知道这个,知道这个。对。Object,并且object构造方一定是最先执行的啊,Object类中的无参数构造方法一定是最先执行的。啊,一定是最先执行的。就是你通过C去调B吗。对吧,B呢,其实你说最先执行这个也也不太也不太也不太也不太严谨啊,你C的时候,你调的话,最先调的谁啊,最先调的C啊C实际上是先执行的。是谁在占顶呢?各位,就是object。
10:02
Object类的无参数构造方法是处于占顶部。处于站顶部啊,占顶最先调用啊,最后调用,最后调用,但最先结束啊。占顶的特点是最后调用啊,但是最先执行结束。就是后进先出原则吗?还记得吧?本类啥都没执行就去调用不是啊,实际上你是先执行的本类。但只不过在本类在执行后续代码的时候,你先干啥呀,先调用这个。啊,就是站的原理,你想占就行了,你想站的原理,Object这个方法,最后那个无三构造方法是一定会会掉的,但它那个无三构造一定是最先结束的,因为他最后压的站他最先结束。
11:05
啊,那最先调的这个构造方法是C嘛,C这个无参构造是最先调用,它最后结束,但是它是最后结束的,它是最先调用的,各位啊,就这个是最先调用的,这个是最先调用的啊,但是最后结束明白吗?然后你上面实际上是有一个什么呀,叫做object,明白吧,就其实你这是继承object,在这有个class object,你这个object里边有一个什么呀,无餐到明白吧。来。Public object,吴三勾有的老师,这个构造方里面还有那个super括号吗?对不起,没了,因为object是老祖宗,是老祖宗啊,就你还有这么一个类。对,给我个注释掉啊,这是散公司写的啊,我只是在这儿,诶给大家说一下,有这么一个东西,实际上你你你你调来调去调来去,最后调到哪调到这儿,调到这儿之后,实际上这个super后括号去掉它,所以它一定是在占占顶部的各位占顶部站你理解吗?
12:06
就你想想咱们之前学的那个站的数据结构,你就理解了。嗯。就占的数据结构是这样的,对吧?哎,你进来一个调一个方法,又调一个方法嘛,你又调一个方法嘛,对吧,你又调一个方法吗?你最后调的不是object方法嘛,那个方法最先结束嘛,谈战了嘛,是不是,所以最后进来的最先结束,最后进来的啊,一定是最先结束的啊,最先结束的,所以这个方法是最后被调用的啊,最后被调用,调用是最后被调用,但是它是最先结束的,它一结束这个就结束了。这个一结束,整个这个方法就结束了,这个方法结束好了,那再往下说白这个就结束了,这个结束整个这个输出了,这个就结束了,这个如果结束的话,那再往下就是这个结束了,这个结束的话,这个代码就结束了,这个代码结束代表这一行结束了,这一行结束就输出这个了,这个一输出这个就结束了,这个一结束,这个Z括号就结束了,这个Z括号结束,再往下输出这个,这个整个C就结束了,它是。
13:07
这样调用的,这个调用过程你要知道啊,压站谈站,其实站的一个一个原理还是比较重要的啊,对我们程序的一个理解是非常重要的一个东西啊,行了,大家吃饭去吧,啊,咱们上午就到这儿。
我来说两句