00:00
到我们这个授课的一种方式呢,做了一个基本介绍以后,我们就来一个快速入门案例及伴生对象的快速入门案例,我们先来看这有两个两段代码,一个是class,呃,Sc person,一个是object object sc。这个person好,现在呢,我们来看一下他们的这个,呃,这个使用啊,同学们看写段代码。超零三我们说半生对象。来吧,写个泪。而伴生了accompany。啊,Pump啊,半生或者陪伴,你也可以写associated的那个也行啊,那么我就用这个单词吧,反正意思差不多就行了啊,Puling object。半生对象好,我写一个object,然后呢,我在这里写一个方法。好,来玩一把,时间的关系,我把这两个特别简单的代码给他拿过来。
01:04
好,写到这,这个是一个类。这是一个类。这是一个类,好,然后呢,我们写个object scanner。哦,看。好跟他的名字一样,然后呢,我看我这定的是什么啊,是一个性别,好,我也就性别。就用性别好,我们先对它的几个概念做一个说明。半生。这个就是办身对象。那么这个半生对象,这个就说这个叫什么呢?这个就叫半生内。半身累,好,我先做几点说明。我做几点说明啊,说明一说明一当。当。当在同一个文件中,当在同一个文件中,文件中有有什么呢?有两个同名的。呃,有两个这样的东西啊,有有什么呢,有class。
02:04
我就写到这啊,有class他和。Object就名字是相同的。那么在这样一个情况下,我们就怎么说呢?我们就称就我们,我们称为就是什么呢。呃,这个就叫。这个呢,我们管它叫做半生对象叫。哦,叫半世内称为。称为半生类。那么半生内会做什么事情呢?我们就把与把非静态的内容注意听。把非静态的内容放在这个类体中,将。将什么将非静态的内容?内容放入到或者是写到啊,都可以写到哪里呢?写到该该类中。该类中。好,第二第二点。这个叫什么呢?这个就叫伴生对象,谁的伴生对象,你可以理解成他们之间是相互的啊,我说这个伴生类,伴生类就指的是它是这个半生对象的半生类,我说这个是半生对象,就说明它是这个半生类的半生对象。
03:15
就他们之间好像说,比如说你说你是他爸爸啊,那那肯定就是针对小孩,你是他爸爸,人家外面走的人,你说你说你是他爸爸,别人收拾你一顿是不是,就说他肯定是个相互关系嘛,就说我说这是个半生对象,我指的是他是他的一个半生对象,我说他是一个半生类。言外之意说他是他的伴生类,他们两个肯定是相互关系,对吧,你说你是说这个人是他的爸爸,那肯定是针对这个人,你不能说你在大街上随便走一个,你说你说这个人是是是你爸爸,人家不是收拾你吗?对吧,肯定是一个关系的好,这个呢,我们称之为什么呢?称为。哎,称为什么呢?称为半生对象。伴随对象,那办生对象干什么呢?是将静态的内容,静态的内容,内容放入到写入到写入到啊写入。
04:09
写入到该对象中,该对象中或者该类中,因为它会对应一个什么呢?会对应一个东西啊,待会再说。那么当然我这儿讲到这儿呢,同学们肯定会说,诶你老师你不是说的没有静态的概念,为什么你你这反复的说静态的呢?我说了啊,我说没有静态的概念指的是没有像我们Java那种很明显的static类东西了,它是通过另外一种方式来实现。这种静态的效果的,所以说我这说了不是说了一句话吗,我这不说了一句经典的话吗,说用一种特殊的对象来模拟嘛,对不对,那静态这个东西它还是有,只是它形式发生了很大的变化,因为它毕竟要跟Java无缝接轨。毕竟要跟无缝接轨,而且这种需求毕竟是我们面向对象要解决的,所以他你说他彻底的把静态所有相关的全部拿掉,这也是不合理的啊好,那么我们再接着说这个事儿,第四点,第四点注意听啊,第四点注意声音,那么我们就来呃说一下这个将来编译以后会在底层生成什么呢?
05:19
这个东西在底层。这个东西编译后,编译后底层生成。底层深层。生成这个这个类,它生成的就是这个类。啊,就这个人啊,对应的文件就是他点class,注意听啊,他点class这个啊per,那么这个家伙。就是你们看到这个半生对象,它将来编译后会生什么呢?最听它编译在底层会生成一个叫做这样的类,那么它对应的文件是它好,基本上大体就OK了,我们来用一下。来,我们来简单的用一下,好,我直接用东西了啊。
06:04
走。然后呢,我直接scan了。是看点six好,我们来运行一下这个地方会输出一个错。啊,这样会输,那我干脆换一个啊,就是性别,我们叫说性别为真啊,就返回一个处,好我运行一下。来,同学们先运行一下,看底层代码。运行一下,我们看一下它们之间的关系,我们运行完过后呢,我们发现它返回一个处,跟我们想的一样,一是我们第六个地方需要注意的就来了,就是对于对于。对于什么呢?对于这个,呃,半生对象里面的内容,我们可以直接通过这个。伴生对象的名字来访问。对于。半生。半生。半生对象对象的内容,我们可以直接通过这种方式来访问。
07:04
啊,属性或者是方法或者方法。啊,芳芳,我们一起,我写一个。我写一个啊DF。DF,来,我们写个c hi啊,我方法也不多,我就反复就这几个方法啊啊c hi,我写一段代码。比如说我就写个object scan person里面的谁。好,同学们,我们也来跑一下。我刚才说了啊,只要是办生对象里面东西拿直接拿来就用,拿来用好直接再运行一下。好了,这次大家也看到没有任何问题,那么紧接着我们来看它的底层是什么样的呢?就是这两句话的本质是什么,我说一下。这句话等价于在底层,我待会反变一啊,在底层等价于等价于这种写法等价于什么呢?这个。
08:00
对象,因为它将来对应的是这个类里面有一个Mo Dollar,这个是个静态的,静态的一个对象,点里面的sex里面的方法。OK,那待会我们反面一再看,同样道理,这个方法的调用,它的底层是等价于什么呢?它等价于猫的里面的这个C。基本上。就是快速入门,咱们就说完,我们反编一下啊,反编一下,然后我们还要说这两个之间的关系,这两者之间的关系,我们先运行一下跑一个。跑完过后我们看一下跟老师说的是不是一样哈,打开我们的反编译工具。打开我们反编译工具。我们。好的,我们打开这个反编译工具,我们看一看啊,朋友们,我们现在是在这个地方讲的,呃。
09:00
诶,刚才哦是第八章,是不是第八章哦,OK,在这里我们打开这两个看一下。哦,这个大家可以看到。这个东西。就是你们现在看到这个玩意儿就对应那个半生内,你们看到这个东西就是对应半生对象,那么我们来看看是不是这样子的点开。好在这里我们可以看到它这个内蒙是放进去的,而且我们发现很奇怪的事情发生了,他这里面还提供了一系列的静态方法,这个静态方法是干了一件什么事情呢?他去操作了我们的。那个呃,那个就是半生对象里面的方法。待会儿我们再看这个之间的关系,这是第一个文件。大家看这个name放这了。啊,然后大家看啊,我们再看这个文件,你看我们静态的东西。Six。还有我们那个方法。就是我们不是写了一个方法叫c hi吗?放这了。
10:02
放这的,也就是说静态的内容全部放这放这,当然有同学说老师你说的不对,为什么说的不对吗?他说老师你看你刚才说的这个里面放的是非静态的,为什么这里面有个c hi呢?注意听啊,其实它看起来好像做为四个静态的,其实它根本没有没有新东西,它其实是用的人家的,看这sc person Dollar点,也就是说,也就是说这个方法只是一个一个壳而已。真正你要写的静态东西,实际上是放在这里面的,看到没有,所以这个关系大家要看清晰。好,这个写完这个我们基本的一个认识呢,咱们就就说到这儿啊,说到这儿,那现在呢,我们来做一些小结啊,做一些这个细致的东西,我们来看一下关系图。好,我把这个关系图给大家看一下,这个之间的关系是怎么来的啊,来打开这个我们的我们的这个呃,图解,我们把这几个关系捋一捋。
11:02
好,我们来看看这个之间的关系。这个半生对象和半生的之间的关系是什么样子的,来看一下。它是这个样子的啊,同学们。他是这样子的。啊,比如说。我这里。我这里有一个,呃。啊,大家看。把这个拿过来。这个这个是一个半生类。这个是一个半生类。我把代码呢写到这里来。好,这边是一个半身的。对象半身对象。好,那么他们之间是怎么关联的呢?好,我们可以看到这个这个半身。这个是半生类。啊,半生半生内好,下面这个是半生对象。半生。伴生对象好,那么他怎么玩的呢?它是这样子的,首先它它这边会生成。
12:07
一个内容,这个内容就是同学们现在看到的它。这个这个内容,我把这个代码呢,简单的给大家拿过来。它是这样东西啊。呃,就这个。它对应的是这个。好,那么我用一个线把它标出来。就是他们是这样子的啊,来我们一点点分析。它对应了它。也就是说,你这写的一个半身内最终对称它了,那么我们再来看它的这一个半生对象是这个。哎,办成对象是有以后,大家就很就很清晰了,把它也标到这里来。啊,标这点,标这点过后呢,我们。好,我们来也用一个线头来表示。啊,就是它对应的它。
13:02
好,我们再来看这两者的一个关系。那么这个是这两者之间的关系是怎么形成的呢?同学们举一个例子,你看。这个里面有个静态。他要他想去调用这个半生类里面的方法,其实它是用到了person里面的这个东西,这个东西在哪里呢?同学们可以看到,在我们的这里面,它有一个。Final类型的model也是一个静态的东西。这个东西在哪里实现的呢?是在这个地方溜出来的。当前对象,也就是换言之就是model Dollar,它其实就是这个的一个实例。啊,他就是谁呢?他就是这个的一个实力。而且是静态性质的。好,这个大家看清楚了啊,那么它怎么调用的呢?它其实是这样实现一个调用机制的。
14:02
就是我我在这儿想去调的话呢,我用这种方式跟你发生一个调用的关系,好,这是他们一个关系好,我们在研究最后一个问题,就说我们看到办事类办事对象他在底层的对应的这一个。对应的这个底层编译的工具,以及在底层他们之间怎么关联起来的,这个第一个咱们就说完了,我们紧接着看调用的时候,它到底调用的是它还是这个很关键,就是说我在这里写了一段代码。同学们,我把这个解决我们基本的就够了啊,就是我在这不写,不是写了一段代码吗。同学们看,我在这个地方写了一段代码。这段代码。那么这段代码到底它是调的哪一个呢?我就以这个为为例吧,以这个性别为例,我就找一个啊,就这段代码。这段代码。他到底是调用了我们里面的他呢,还是他呢,好我们看一下。
15:05
看这里,这个是调用。好,这个是我们。使用或者调用啊,使用什么呢?使用这个,呃,半身半身。伴生对象的属性或方法,大家看这里我标一下,我以这个为例。我以这个为例,我把它标成一个红色的粗体啊,标成一个红色主体,我们看看它是到底怎么怎么玩的啊,这个颜色看起来可能大家看起来很难受,我换一个颜色。老子这个颜色更难受了,好。标成一个粗体的。好,标成一个书体的。好,我们看看他这次到底怎么玩的,打开我们反编译工具看一下。打开这里从哪看呢?显然要从这看,这是我们的初始,进到这里面去哦,同学们看这里,明白了,看这里,同学们看这里,其实它在这里面调用的是它。
16:01
也就是说。也也就是说他想去调用sex也好,还是c hi也好,你们看。其实他是这样走的,那也就是说他这边对应的东西是这个。是这个它在底层实际上是这样走的,那既然底层是这样走的,我把这个标。标粗一点他是这样走的,它是这样走的话呢,从我们这个代码来看,其实他目前并没有用到。CA person,也就是说我们这个地方去调用半生。对象里面的方法其实目前没有跟他发生关系,它是怎么调的呢,它直接。他直接就走了这条线。他直接就掉这个了。他直接掉掉这个了。好,同学们看这个关系啊,也就是说我们在调用的时候,其实目前没有还没有走到这儿。
17:00
就是说这个地方你可以暂时认为目前这个。在在调半生半生对象里面的东西时候,目前没有用到它,因为它直接就用到了这个半生对象里面生成的这个C。这个方法,而且你看静态的内容已经被拿掉了。你看你原先写这个CC hi的时候,其实你你看这个并不是个静态方法。对吧,他认为就是个普通方法,好,这个关系我们就先聊到这儿啊,关系就先聊到这儿,好,嗯,那么关系聊完了以后呢,我们先截取一段视频。
我来说两句