00:00
好,同学们,我们来看看开了面向对象的第二一个部分就是终极部分,那终极部分我们先来说一下这个包,先来说一下这个包,嗯,在斯开里面这个包的地位是比较高的,就是它它的这个功能呢。在Java这个基础上做了很大的扩展,不是做了一点扩展,做了很大的扩展,所以说在开里面的这个包的地位是比较高的,那么我们来简单的来说一下这个包它是怎么用的哈,还是老规矩,用一个需求来引入我们这个包的,呃,这个必要性那简单说一下就行了,这一点大家应该很清晰的说,现在呢,有两个程序员去开发一个项目啊,小明。啊,希望创建一个类的名字叫dog,小强呢,也想定一个类也叫dog,诶两个程序员就开始吵架了,那谁用了对吧?好,当然大家心里面都知道,如果你们因为你们是学过Java,你们当然知道,那没学过Java你肯定还是不知道的,对吧?所以说我们学完Java,知道我们这个类,这个包呢,就专门可以可以干这事儿,我们包有三大功能。
01:08
对吧,三大功能,第一个功能呢,就是区分不同,呃,区分这个相同的类名,第二个呢,它可以用来管理。我们的类是不是因为你类很多,你放在一个地方,你肯定不好管理嘛,啊,它可以用来对我们包进行管理,包还有一个什么作用,大家知道吗?它有三大作用,老师经讲过,还有一个作用是不是包可以使用到我们控访访问这个访问范围里边,还记得吧,就是你们在学Java的时候,Java里面有四种访问修饰符里面,其中就有一个包。这就是public,那么不同的包访问是怎么样子也在里面,所以说包呢,有三个作用,哪三个作用区分相同名字的类。当类很多的时候,管理类第三一个控制访问范围。所以说在这个在这个包里面的地位呢,其实主要就三个,它就可以解决问题,好这个应用场景就推出了这个包,那么Java里面这个包的回顾呢,我们简单的回顾一下包的三大作用,Java里面打包的指定是package,这个不说了啊,那么在包在讲包的时候,老师一定讲过包的本质是什么呢?包的本质就是在编译的时候,在我们编译的时候,或者是在在使用的时候呢,它会创建不同的文件夹来保存这个类。
02:32
就是就是它实际上是用你的这个这个包的这个这个结构创建的一个文件夹来保存我们的类文件,我画一个示意图,大家理解一下,因为我为什么要画这个图呢?因为待会儿我们要跟他跟实刊了,进行一个比较,大家一下就明白了,好打开打开我们的这一个。这个图解啊,打开我们这个图解来看一下。好,这个图解呢,我们继续在这画啊,我们继续在这画,来看一下Java的这个包的一个关系,Java包和源码。
03:11
就是这个类源码,类的源码和它的这个点class这个文件的关系,关系示意图,包括还有哦对,类应该是类的源码,还有文件路径。文件路径,还有class文件,就是质检码文件,自检码文件的关系,关系图好,我给他画一下。呃,因为将来后面呢,我一会我一会要跟他对开了,做对比,好我简单画一下这个图啊同学们,那么它是怎么一个关系呢?它是怎么一个关系呢?它是这么一个关系。啊,说我这边呢,有一个原文件,啊说我这边有一个原文件,比如说我这个文件呢,就叫。啊,比如说我们就叫do吧,诶就叫就叫就叫do点这个Java文件好,假如呢,我这边打了一个包叫package啊,Com点艾特硅谷,艾特硅谷点dog完事好,然后呢,这里面我们就写了,写了这个一个一个类啊OK。
04:20
OK,好,这个就写完了。这个就是我们的原文件,那么原文件,呃,他一旦写了原文件,它有一个要求,他有个什么要求呢?注意在Java中它有这么一个要求,就是呃Java Java的对对这个包的一个要求是什么呢?就是第一点。第一点就是你的这一个包这个原文件,你的这个原文件它一定要放在这个路径下面,就是你这个打包路径下面不能乱放,是不是有这个要求啊,肯定有这个要求,如果你你改了他就报错了。他就报错了,你比如说我给你写一个单代码。
05:01
好,现在呢是我们的CHAPTER07,我写一段代码,一边讲呢,咱们一边举例啊,Com点艾特硅谷点CHAPTER07,这是我们的第七章,好,第七章为了比较好分呢,我先写一个临时的文件放这啊,后面可能要用。好,然后呢,我们写一下Java的一个包的一个案例,好,咱们写一个包叫Java。加package OK,好,我们在里面写一个小文件。啊,我们就写一个Java文件啊,所以同学们看一下,比如说现在呢,我写了一个,呃,这个DOGDOG啊dog好写完了。写完好,同学们可以看到,同学们可以看到,我在这写了一个这样的文件,以后呢,看这个包。的录,这个苞米是com.I的硅谷CHAPTER07,然后拍给你,那就意味着你这个do的源代码,就你的do源代码一定要放在这个对应的录音下面,是不是这样子的呢?我们看的确如此,你看我浏览一下。
06:08
啊,就一定要放在这儿,当然这个老师呢,以前也是讲过的,你看这从我们的哪里开始算呢。从我们项目的根目录,大家都知道,我们在讲的时候,我们直接把SC做成这个源码source root的,所以它的路径呢,就从这开始计算看,你就必须放这儿,那你如果不放这呢,它就会报错。这是为什么呢?你看啊,我随便改一下,比如我把这个地方加了一个哈,立马就报错了,立马就报错了,因为你的源代码是放在这个路包对应的这个路上,你这样写。那就相当于说人家认为你是你是要把这个dog放在这里面去,但是你没放,这就报错了,所以说这个地方它的第一个需求是什么呢?要求我们的这个原文件,注意听啊原文件。源文件就是类啊,就这是类的源文件,类的源文件,源文件需要需要和包。
07:09
包的这个包的这个有个对应关系,和包的包有对应关系,包对应的对应的这个路径啊,文件路径有对应关系。就是你这个包呢,其实这儿代表一个路径啊,代表和包对应的文件路径匹配。啊匹配好,这是第第一点一点,第二点,当我们编译以后,当我们编译后,当。啊,当我们编译编译这个do内后,内后会生成,会生成什么呢?会生成对应的点class文件。那么这个文件会分在哪里呢?编译器也会把它放在一个对应的这个路径上面,编译器,编译器会将该该点class文件,Class文件放在啊也放在啊,也放在放在这个包。
08:11
和包对应的一个文件路径匹配的目录下。呃和放在哪里呢?放在。和包对应的文件路径下。那有时候老师你给我们演示一下啊,同学们看,现在我显然要把这个先先去掉,先去掉,如果我来运行一下啊,但是我现在必须得写一点东西了,我不写这个东西,跑步起来啊,我写一段啊。这这有个道啊,大家看清楚了,我就输一下。我写个hello dog。好同学们可以看到现在呢,因为你没运行啊,我们现在运行一下。运营一下,我们看一下。好的,同学们可以看到,代码呢,应该运用起来,我们来看这个它对应的自检码是放在哪里的,找一下啊,这个路径不能变,那那说老师你为什么要讲这个呢?我们都知道,因为待会我要跟斯康纳进行比对,大家看这里,这是我们的原文件,它的路径就是这个,这个从。com这开始算的,没问题吧,好,现在呢,我们来开始找一下它生成的这个字解码文件是放在哪里的。
09:19
Come,爱的归谷这儿,诶这不不对,这啊不是在源码找。不是在源码找在这儿。在这里面去找target class爱的硅谷。好看07PACKAGE到,诶你们可以看到,其实它对应的路径也是这样子的,只是它的起始点是从这边拉来,你看也是。com艾特硅谷差零六,然后207JAVA拍给你,如果不放,这绝对跑不起来。好,这就是我们Java的这个包,Java我这讲的Java的,诶就是Java的这个类源码。
10:03
文件路径和class的一个关系,你可以认为一旦编译以后呢,他们都会按这个关系来存储,意意思就是这样子的啊,原文件。啊,这个一旦编译过后呢,它会在这个路径下面也生成一个直页码,在哪里呢,在这。好,这个讲完我们这个就OK了啊,就下面就比较简单了,好这个自解码文件它会放在哪里呢?放在一个对应的这个目录下面。哎,同学们可以看到放在这儿了。好,我把这个路径放一下。好,这边就是我们的这个do do.class do.class而你这个java.class放在哪里呢?它其实是放在这个路径下面的,来这个他们的关系就出来了,在这我复制一下。好,是从二开始找的啊,我就截取到这儿。
11:00
好关系,一目了然,好了,有了这个东西,东西以后呢,同学们,下面我们。就来演示一下这个呃,用Java打包技术来解决两个呃文件名冲突的问题,我们快速的演示一下,待会儿呢要做比对。好,在这里我建一个包,因为小明和小红呢,他们用的是不同的,呃,不同的,他们用的是同一个类名,但是为了区分呢,我打了两个包,一个叫小明啊小红。小红,再建一个包,诶,同学们可以看到啊,我再建一个包叫小明。这两个呢,在不同包,那么分别在这里面创建什么呢?两个呃,两个类啊来建两个类,我用SC来创建了啊,因为现在我讲的SC了,那我渐渐一个什么呢?啊,这已经有个dog了是吧?这有个dog的话,那么我们换一个名字嘛,比如他们都叫都喜欢用这个tIgEr。
12:01
好,这个tIgEr好在这里面呢,我们也用一个tIgEr。好,也是一个tIgEr。好的,写完了,写完以后呢,我们发现这两个并不冲突,很好很好,然后呢,我在这里呢,来写一个文件,用它叫use test tIgEr。好,我们看看怎么用的啊,同学们写个object,那我写一段代码,那么使用使用什么呢?小明小明的这个tIgEr类好非常简单,下面呢,我们使用小红的tIgEr类。小红的好,看我是怎么写的啊,看我是怎么写的,诶说错了,这方是有问题啊,这个地方应该我写的是Java的,呃,是JA现在讲的这个是Java的啊,那这地方有有问题,我把名字删后缀改一下,改一下啊这个地方呃有有个问题,因为我这是讲Java的,那就还得把这个文件名改一下。
13:04
嗯。啊哎,这个讨厌啊,我这突然跑到这去了,那这样子我快速的再写一份啊,写Java的刚才没反应过来,TIgEr。啊,TIgEr。好,然后我把这个先删掉,把这个先删掉啊,这个地方应该是Java的,好,我把这个先删掉就可以了。走上一个。好,这边呢,我们也把这个先删掉,好重新来演示一下,快速走一个啊,不着急,TIgEr class。好,这个呢就就OK了,两个都是Java的啊,这是一个Java的,这个也是一个。Java的两个,诶这个是不是Java的。两个都是Java的啊好,我在这里面呢,再写一个test式的tIgEr,用Java来写,这个我先删掉。好同学们,我现在再因为我这整个是讲的,先是说到的Java嘛,好再写一个类叫test的test tIgEr好写一个类,现在呢,我们快速的演示一下。
14:09
啊,使用小明的,小明的tIgEr。好使,用小红的。啊,使用小红的tIgEr好。TIgEr,好了,那怎么用呢?非常简单,咱们就这样写的,他首先我们找到啊,它是这样子的。你要用这个小红的,在同一个地方要用两个同名的,那就肯定是com.at硅谷。啊,把这个路径全部写清楚对吧,然后点加点我们的这个小零下面的tIgEr啊TIGER01。零一等于六一个这样的tIgEr。对吧,你肯定要把这个名字写全,而且呢,我们也发现就是因为在Java里面不能使用类型推导,所以这个路径就要写清楚,那么用小红的呢,那也很简单,就在这个地方做一个改进,就变成小红,这边呢,把名字改成TIGER2这边也改成小红,这个代码就跑起来了。
15:11
跑起来,那么我们运行一下,看看是不是分别对应啊,对应这个小红和小明的tIgEr加1TIGER101,再加一个TIGER02,快速加上TIGER02,好,我们运行一把。我们看它区分出来了没有。好,当我们运行过后呢,我们看到这结果的确如此,第一个TIGER01是小明的,TIGER02T02是小红的,没问题,那么在Java里面呢,它是这么去处理的,它很严谨,就路径这些通通不能改变,这是Java的一个呃,包的一个使用的案例,那么在Java里面引用包是port的,这个不说了。呃,Java这个刚才讲的Java报名源码路径一定要保持一致,如果不一致就会报错,而且刚才我也讲了,编译后的自解码文件路径也要跟报名保持一致,如果你不对,肯定跑不起来,就类似于刚才老师说的这个动作,你在这个tIgEr里面写进去,你这帮钥匙改成一个别的名字,肯定报错。
16:18
但是待会死开了就不一样了,死开了这地方做了一个改进,改进很明显,就在这改的特别的明显。好,有了这这个地方呢,就是我们把Java包的内容就回顾了一下啊,举了一个案例,回顾了一下Java的特性。我们先把。Java这一块的内容呢,做一个简短的回顾。好把它板述一下,刚才我们讲了一下包这块内容,把Java的包呢做了一个回顾。好,我现在呢,呃,这是我们的又一个章节,我新建一个吧,叫。面向对象啊,面向。面向对象编程,我们叫中级啊,中级啊终极部分OK。
17:04
终极部分,好的,呃,那么现在呢,我们刚才说了一下包,诶我们说了一下包讲了哪些内容呢?我们简单的来看一下,呃,首先我们看了一个应用场景,诶引出了包的必要性,就是包它是干什么的呢?至少一个最重要作用就是区分,对吧?区分当然还还可以管理。这是包的一个引出,引出啊引出来了过后呢,我们这提出,诶可以使用使用包来解决这个问题,使用包,诶使用包就可以解决这个问题,好这是第一个,那么这个说完了以后呢,我们就回顾了一下包Java这个包的一些特点和它的作用,并举了一个案例,诶这是刚才我们的部分,好,我把它呢也给同学们板述一下,诶刚才我们讲的是什么呢?讲了一下包的3JAVA包的三大作用。
18:06
二三的作用,一个是这个第一个是区分对吧,不相同名字的类啊,当类很多呢,我可以很好的管理类,其实这个作业也很明显,同学们在将来写大项目的时候,不可能都放在一个包对吧?哎,所以说这个管理类也是它的一个作用,然后呢,我们又回顾了一下。回顾了一下,什么呢?就是Java的打包指令,这个就不再多说,这个特简单,就是一个package打包的本质,我们画了一个图来描述它,就是在Java里边,这个包的本质是什么呢?就是用不同的文件来保存内,而你编译过后呢,又把自己码放到对应的这个文件夹,下面这个图就是刚才老师画的这个图。哎,这个图呢,是它的一个对应关系,我们也把它捞到这个地方来,没毛病没毛病好,那么呢,我们又讲了一个快速回顾案例吧,这叫快速回顾案例,我们呢,也把它放到这儿快速回,诶这样不行啊。
19:09
快速回顾案例,再来一个标题三。标题三,诶,这个标题上为什么会这样啊,看一下。快速入门案例。标题上好,我把这个代码呢,也给同学们拿到这里来,对吧?诶,刚才我们讲了一个这个案例呢,其实特别简单,我就直接把这段代码拿过来就可以了,其他不再多说。因为同学们以前都学过的。好,这个地方就把我们包的这个,呃,说完了啊,说完了啊,这个特点我就不再截了啊,大家看清楚,好,这是夹包的一个概述和呃,Java包的一个回顾。
我来说两句