00:00
好了,那么接下来呢,咱们继续再往下各位啊,再往下,那这个内存图理解了,我们再往下继续看啊,还是super。上一个例子呢,我最主要告诉大家,Super括号在什么时候用,你以后把握住这个特点啊,就你这样写肯定不行,因为你this account number this balance这两个属性你不能这样写,你要这样写的话,那你负类的构造方,呃,副类的属性是私有的,你访问不了,所以在这块你可以调负类的构造方法,通过负类的构造方法的执行过程,对吧?你给这个属性给它附上值不就行了吗?就初始化负类型特征嘛。是吧,哎,就这样一个东西啊,那行,那咱们的内存图上也体现了super是个什么东西,那好继续啊,咱们再来看到底学会没学会,咱们考核一下大家啊,大家思考一下,看一下这个程序啊。Public static void。
01:00
来在这儿呢,有一个class啊,有一个class,这个class叫customer customer啊然后接下来呢,嗯。这样在这有个name,有name啊呃,然后呢,在这里呢,我提供一个构造方法,我没有私有化各位啊是呃,没有没有前面加private啊。商品方法呢?Shopping方法了,烧方法别往这写了啊,写个各方法大家考了public customer无参的,然后我再写一个有参的customer,这个有参数呢,我就直接给它附上一个name啊,this.name name。然后接下来在这里有个VIP啊,去继承谁啊客户VIP客户啊去继承customer此类继承父类之后呢,我在这里啊干什么呢?Public。然后紧接着怎么着呢?哎,我有个方法叫shopping方法啊方法。
02:06
好了,那这儿呢,我也提供了构造方法吧,VIP一个无餐的,紧接着呢,我再提供一个有参的构造方法,大家看好了啊,有餐的VIP。好,String name啊这呢我就写什么呀,写super括号啊,Name应该能看懂吧,就相当于我是不是通过我子类的构造方法去调,你附列这个构造方法呀,这个name是不是附上去了,附上去了是不是啊,那么我在这里啊,访问一下system.out.print line打印我输入谁呢?输出比如说this.name对吧?哎,正在什么购物,我想问的是这个地方。写this their name,写点name和不写这三个一样不一样,那上面这个程序我得先把对象扭出来啊,VIPVIP,拗一个VIP。
03:02
这个VIP呢,假如说我这个变量名啊,假如叫V吧,啊,这个名字叫张三直接写了啊张三,然后接下来呢,我v.shopping。我想问大家一个问题,就是这三行代码一样不一样。嗯,我把代码缩一下啊,缩小一下,你先看着啊。嗯。来。各位,我们把这个内存图画一下好吧。把内存都跨一下啊。Super。啊,关键字的理解。
04:02
来。注意听啊,注意听,你集中精力听就行,能听懂就行啊。这块的东西其实没啥东西,就是一个理论上不太好理解,GM,那整个这块呢,咱们是一个什么呀,方法区,我呢就不再多说了,各位啊,这是一个方法区,然后紧接着呢,我们这里呢,有一个什么呀,叫堆啊,我们把堆画出来。是。然后紧接着这块呢,是一个叫做站数据结构啊,这是一个站。好了,这一块的话,我们把它切了啊,切掉好,那么首先第一个呀,我们这个程序会接近类加载,类加载我就不说了,我也不画了啊,不写了,简类加带完成了,先执行闷方法,所以这个时候呢,会在这里呢压战,那压战这个应该很简单了,这是闷发战争了,我压过来了啊,这是一个闷方法战争,那么这块呢,我们继续看啊。
05:03
呃,Vipv等于new vip6vip会执行这个构造方法是不是?是吧,哎,这个构造方法大家看啊,那执行这个构造方法,它会先执行负类构造方法。那负类的构造方法,实际上这一块它有一个什么呀,Super括号,这个super括号会执行object的构造方法,所以他在内存上应该是怎么着呢?先是谁的呀object吧。是不是object类型特征,然后紧接着呢,初始化出来之后。来,注意看啊。他会继续怎么着啊,执行这个this.name name把这个super嘛,执行这个嘛,是不是这个执行完这不行,执行这个吗?这个name和name附上值了吗?这样的话张三是不是就传过来了,张三放到这儿吗?传过来之后传过来张三,张三这边付给this.name吗?是不是这个name就有值了,那这是什么类型啊,这是这这个构造方法初始化是谁的谁的特征。
06:02
是不是就是customer特征啊,好,那么这个里边是不是有一个name啊各位。等于啥呀,张三吧,不就初始化出来了,好,那么接下来这个初始完之后,我们再往下,因为你你你这块再往下就没了吗?再往下就没代码了,你这个代码执行的不就是这个构造方法吗?你这个构造方法执行结束了,那我这个方法是不是就也就结束了。对吧,当你这个大块开始到这个大块结束,只要你这个大块结束之后,我们整个这个空间是就就开完了。开完了,什么叫开完了?就是VIP空间开出来了。来就是那个。这就是VIP。好,那你这个VIP里边有没有this啊,THIS0X1234对不对,哎,0X1234干啥呀,指向他自己呀。对不对,这指向他自己啊来。那我这简单画一下啊。这是一个this。是这个意思就行啊,指向他自己,那这里有没有super呢,各位。
07:06
这个super实际上指向谁,指向他?对吧,实际上这个里边啊,怎么着,还有一个叫super,这个super怎么着呢,它指向谁啊,它代表的是副类型特征。那指向它,那么这个时候这个对象的内存地址付给谁呢?付给这个叫做vipv。是不是那这块呢,我们就是一个哎vipv,那他呢,这块应该是有一个什么呀。地址的这个变量里边保存了一个地址嘛,是不是,哎,这个地址是0X1234,那么这个内存地址呢,指向了谁呢?我们对内存当中的这个对象。啊,是这样一个。好了,那么指向这个对象之后呢,接下来我想问的是什么呢?这个程序在这个位置,你shopping的时候,你vipv扭出来V商品去调到这个方法this点。好,我问大家。
08:01
这个name。现在有没有在这个框里边。来跟我互动一下啊,就现在这个name各位。他有没有在我们这个框里边。有吧?所以this.name能不能访问?能不能访问到这个name?可以吧?是不是,哎,可以啊,好,那么接下来我问大家super行不行。这里的this表示当前对象,对吗?Super呢?Super表示的是当前对象的副类型特征。
09:00
你想,这个super是不是代表了当前副类型对象的特征,也是super可以说是this的一部分?就是你可以这样理解啊,就是super是this的一块,This指向的那个对象中的一块。空间啊,Super是this指向的那个对象中的一块空间,这就是super name行不行?首先我们大家这家static还行吗?加这个行不行。加static是不是就废了各位为啥?因为加static的话,大家知道这个方法是不是就没有当前对象了,没有当前对象,没有当前对象this是不是就不能用了?你this都不能用了,你何来super啊?所以这个方法不能是静态的,注意啊,再说一遍,Super和this都不能出现在。静态方法中,所以这块呢,你加一个static,你看它会不会报错,我们去编译一下Java c编译super。
10:10
TEST0,四点加va z。好,大家看二十三二十五二十六,二十三二十五二十六,你看都报错,二十三二十五二十六都不行,所以这个不允许不允许啊,那好了,那这块super name行不行啊。那name这个可以确定name和name一样,因为我们说过name前面如果什么也没有的话,它自动会在这加什么,加引用点,而这个引用会自动加啥,This点是不是好,那this点有没有问题啊。没问题。是不是你this指向是这个这个盒子呀,这个盒子里边有name吗?这不name吗?对不对,那用super.name行不行。可以,没问题。没问题,各位没问题。来,我们尝试一下。Java CBA。
11:00
并且Java运行的结果是什么。大家看好了Java。Super test04走,张三正在购张三,张三正在购物,这个程序非常非常的完美,是不是?好了,这个内存图这样啊,我另存为我另存为什么呢,叫做super test。零四。注意啊,这个内存图对应的是super test04啊,我这个例子叫做super test04。好保存一下啊,保存一下。行了,这个例子呢,我就说到这儿。
我来说两句