00:00
下面呢,就是要讲撕开了包的注意事项和使用细节,我们来看这这个地方的内容就稍微有点繁琐了啊,因为一谈到细节呢,总是让人感觉到也就是杂七杂八的嘛,杂七杂八的我们先看第一种盖了打包的方式呢,除了这种传统的方式之外呢,还有另外两种。尤其是第三种使用的特别多,哪两种呢?一种是这种方式,这这个就不说了,传统的,这是最传统的方式。这是传统的方式。那么还有另外两种呢?等同于这个写法,就package com点爱的硅谷package干扰它可以把它分成两部分写这个,这两种是完全等价的,就是这种写法和这种写法完全等价。我写到这。和和第一种完全等价和第一种第一种方式第一种方式完全等价。
01:03
那么还有一种方式呢,是同学们以前在Java里面没有见过的,他怎么打的呢?先package com,点爱的硅谷一对大括号。大括号里面呢,又打一个package,又写的SC,那这句话是什么意思呢?来,同学们,我们干脆把这个拿过来给大家讲一下来吧,因为前这两种大家都见过啊,这两种这个虽然没有见过,但是我已经说了,和第一种完全等价。那么这种是什么意思?是我们要去重点讲解的,来看一下先。好,那么现在呢,我们打开scanner,还在这个位置建我们的内容打包的介绍package。来走一个啊,走一个,新建一个scanner。就是呃呃,Package package的这个打包的一个方式吧,啊方式,比如说我们这个打包的DEMO好写一个啊,同学们看一下。
02:06
好,写写到这里,写到这里呢,我为了省事啊,我这次完大家都知道在开里面,这里面东西其实你可以完全不按他的路径写,我就干脆给它拿掉。啊,拿掉我就这样写,没没毛病,因为我们刚才讲过,在开里面的这个包ing和你的这个文件啊,没有文件的路径没有任何关系,所以你想怎么写就怎么写。好,那么我们来做一个简单的介绍,是什么意思呢?啊,这个地方就是一个重点了,首先我给大家介绍一下下面几句话的含义啊,首先看一下这个什么意思。好,我们做一个介绍,第一个这个呃,com.package。就是这这个表示我们这打了一个包叫com点爱的硅谷。爱的硅谷,然后呢,这里面就是这个里面是我们对这个包里面的内容的编写,好我先写到这儿。
03:09
Package com.at硅谷大括号表示什么呢?表示这里,表示我们创建了一个包,这个包是什么呢?Com,艾特硅谷。爱的硅谷。诶,那么那么大括号里面写的是什么呢?大括号里面就是你这个包里面写的东西。那可以是哪些东西呢?可以是另外的包,还可以是内,还可以是我们的tree啊,我就写到这里啊,在大括号里面我们还可以写什么呢?在大括号中中我们可以,我们可以继续继续写它的纸包,它的纸包诶,它的纸包,比如我在这里又写了一个SC这个包,那么你看到这个东西相当于说这个纸包是什么呢?是com点。
04:06
com.at硅谷点scanner啊,就说你在这里面,这个scan就代表是这个com at硅谷的纸包,这是第一个可以写这个包,除此之外还可以写什么呢?还可以写类。啊,还可以写特质,这个特质我们还没讲,还可以写特质啊,特质就是我们的treat还可以写,还可以写什么呢?Object。等等啊,主要就是三个,所以说呢,也就是说我们在这里面可以写东西那。这地方我在说的再直接和到位一点,就意味着我们在一个文件里面,注意听这句话,我们在一个文件里面可以创建多个包,并且在各个包里面创建各自的类和对象。明白这意思吧,即。
05:02
及这种语法及scanner支持支持什么呢?在一个文件中。在一个文件中可以同时创建多个包,以及以及以及啊,以及给各个包创建什么呢类。Treat。和object,你看Java肯定是做不到的,因为Java里面它上面来了一个package过后呢,里面就只能写累了,你不能说我我一个文件创建多个包,你去试试看,你再找一个包,你得再建一个文件是不是,但是死干了可以非常灵活,那么我们来玩一把,那大家看到。那么我就一这这两个我们就介绍了啊,这个就是这个就相当于是包点at硅谷,这个呢,就代表是包什么包呢?com.at硅谷点scan。
06:02
啊,我想那这上面少了一个U,好,那么这个代表什么呢?好,这个代表就是表示表示在这个包包下面。注意听,在这个包包下创建了。创建了类什么玩意儿呢?Person能理解能理解好,这下面里面又是在这个类里面呢,就是person里面,这个就是独立的这个person里面有一个,呃,内蒙和一个方法是吧,好同学们看到这个效果了啊,那现在我要用一把。我要用一把,那么我怎么用呢?来朋友们,我呢在这写一个object没毛病,我可以写一个object,那我就写一个test。好,写个test过后呢,我在这里面写我的主函数可以的,那么我问大家一个问题啊,如果我在这写了object,那就意味着什么呢?表示在这个包下面。创建了一个object,那我问大家一个问题,Object test,我问大家,一旦我编译以后,我问大家啊,我问同学们,看看你们能不能答上来啊,我问这个问题同学们思考。
07:13
如果我运行这个程序,如果我运行这个程序,请回答,请回答我们一共创建了多少个包,以及一共创建了多少个class文件?能答上来吗?啊,其实很简单,我们一共创相当于说,呃,如如果这样子啊,我在这,呃相当于说我们这创建一个包是com爱硅谷SC,在这个SC里面呢,有一个person。这个class文件,同时呢,还有一个test class还有一个test的Dollar。那个点class文件还记得吧,啊,所以说一共有三个类。三个这三个三个这个class文件呢,会放在com点爱的硅谷SC这个目录下面,我们运行一下来玩一把。
08:06
运行一下啊,同学们运行一下,OK,我们运行起来,我们可以看到代码,那这报错了,原因是a person可能在别的地已经定义过了,我改改改改一个名字啊,那么person呢,咱们就改一个比较,呃,三吧,改一个三好,改一个三没毛病,改一个三。再来一下。再来一下好这个诶怎么这么嗨,这个三这这是什么玩意,这个哦,我在别的地方还有这个玩意儿呢,这个这个是哪个文件里面的呀。这个是哪个文件里面的呀?哦,这个是我以前写的,呃,这个就还有一个test类,以前还写过,你看这个很很讨厌很讨厌,那这样子我再还得改个名字啊。呃,我找到刚才我们写的这个。这这个地方来不着急,这个test的也也没用了。
09:00
哎,我刚才改到哪去了。啊,那这个T的我改一个名字啊,改个名字,比如T的100。开始的100再来执行。好,这次应该就没有重名的了,OK,运营起来,那么运营起来过后呢,我们来看一下,嗯,在这个底层里面会生成什么东西啊,我们来一起看一下,打开我们的这一个。呃,这个target的位置。Target看到这里面。呃,首先我我们来确定一下这些文件在原文件是在这儿。我们的原文件就在就在这个scanner。这个位置,这是我们的原文件。诶不不是啊啊不不是这是是是在哪去了,我看看啊,不不是这两个啊,原原文件生成的,呃,这个package,呃import就是不不是我们现在我们是package DEMO啊package DEMO不在这里。
10:03
我干脆直接这样定位。快点。好,同学们看,原文件是在这个位置。原文件就是在这个位置,大家看看清楚了,就是我写的原文件,那么它生成的那些文件上哪去了呢?在这个位置大家看点开我们的这一个target,然后classes come,爱硅谷就在这。看。com爱的硅谷里面有个scanner。这也就是。我们的文件。我们的文件,那么这段这段代码呢?同学们看起来啊,好像有点不太对劲,我干脆给你们再重新。干掉一下,我们再重新生成一次。再重新生成一次啊,来我们再重新生成,因为我以前也用过这个路径,好,我们来再来跑一下跑一下走。好,这个就对了,那苏老师你刚才为什么那文件,那你不是刚才看到一大堆吗?那个一大堆是我昨天晚上做测试的时候,我我也用这个路径了,所以说看到东西很多。
11:12
啊,所以说看的东西很多。呃,所以说现在我得换电池了,现在那个电池没有了,电池上哪去了。这电池用的很快啊。哦,稍等一下啊。好,同学们,我们继续啊,我们继续,呃,那么同学们可以看到的的确确啊,根据我们的指示放到这了,那么我们就看到person这样一个东西了啊,这个第一个第一个这个呃形式我们就说完了啊,就是呃打包的三种形式,大家已经看到这个效果了,好,我把这个代码呢给同学们板述一下。
12:12
啊,这个我们讲的是,呃,刚才讲的是SC的注意细节,第一点啊第一点好,我把这个图稍微的缩小一点。好,所有的缩小一点,好SC注意事项啊SC注意事项。SC包的注意事项。好,我们刚才讲了它的打包的这么三种形式啊,三种形式。好三种形式,那么我把它给它给大家板书到这里来。对吧,好代码啊,代码呢,我就直接从这里截取啊,直接从这里截取,大家看的很清晰。好,把代码放到这里来,那这里面呢,我也做了大量的这个注释啊,就是它是什么意思,也把这个注释说清楚了,主要是把这几句话看一下,好,这是我们的SC的细节,第一点我们来看第二个地方再看这。
13:16
呃,包也可以像嵌套类那样嵌套使用。机包中有包。这个在前面的第三种打包方式其实已经讲过了,那么在使用第三种方式的好处是,程序员可以在同一个文件中将类、object或者treat创建在不同的包不同的包中,这样就非常灵活了。你比如说现在我这样写。同学们看一下,比如现在我这么写,你们看看能不能。有,有一种感受,好,我还以这个为例,呃,我现在现在所有的一个person和object都是放在这个包的,我现在在这加一个东西。Class user。好,同学们看,如果我在这加一个东西,就相当于什么呢?在这个com点艾特硅谷这个包下创建了一个什么呢?创建了一个user类。
14:15
U啊,你看它很灵活啊,就相当于说我在这个包下面降东西了,我在这个包也见东西了,来我们再运行一下。当我这样一运行过后呢,我们回头再看刚才的这个源码包,你会发现又多了一个东西,在他上一集多了一个UR。好,你看这这个是user,就是我刚刚创建的,呃,这是这个就在com爱的硅谷下面,然后呢,SC下面呢,仍然有我们的东西。啊,这是刚才所说的,而且呢,它还可以再创建包啊,它是包中还可以有包,那就意味着我这样写也是可以的,什么意思呢?同学们看啊,假如我在这个地方。再写一个package。再写一个拍就叫干了。
15:02
二。SC2。是干二,哎,那么在这里边我们能不能再写一个克拉斯U呢?也是可以的。好,这样就看起来有点有意思了啊,这相当于说我在这个com这个地方呢,又创建了一个包。什么包呢?这个包是com.at硅谷点SCAN2。SC2,那么在这个包里面呢,我又创建个userr,当然因为你这个说老师你在同一个文件怎么写了两个相同的userr呢,还没报错,对,是的,如果你在Java里面认为写必出无疑,但是在SC里面,因为你在这个地方的UR呢,它已经定位到这个包下面了,所以说不会报错。啊,那么这个时候这个是在哪里呢?它是在这个包包下面创建的。这个UR因此呢也是可以的,那么我们再跑一下啊,同学们,我们先看看这边有没有啊,有可能以前我创建过。
16:03
好,这有个SC,我先把它删掉,我先把它删掉啊好同学们,我们运行一下。直接运行。那运行完了过后呢,我们在这边可以看到SC2就出来了,出来里面有个什么呢?有个userr刚刚创建的。啊,所以说他包中有包,包里面呢,还可以建我们的这个对象,那同时你在这边还可以再继续写包。啊,这个就很很很很有意思了,那就可以满几乎满足你所有的需求。好,这是我们说的第二个特点,可以写类,可以写object object也可以写,也可以创建。好,这个就在不同包里面,就非常灵活,好,我把这个呢给同学们也拿过来看一下。好,这是我们讲的第二一个细节是包中可以嵌套使用,就是可以包中有包,包中可以再创建包啊,但而且呢,这个就是呃,在程序员在同一个文件中,可以把这些东西创建不同的包中,可以非常的灵活。
17:08
好,那么这个代码呢,我给同学们放到这里。好,这是我们讲的又一个注意的地方,好,我把这个代码给大家放一下啊,各位朋友,那刚才我们写的这段,呃,这个地方就体现出它的一个特性,好。我把它放到这儿,哪里体现的呢?哪里体现的呢?就在这体现的。对吧,就在这,你看我在这个地方直接创建一个user。我标成一个蓝色的粗体。在这个地方,我又创建了又一个包。啊,有在这儿创建一个包,好把它标成一个蓝色的主体。好,这是我们的第几个特色呢?第二个特色,紧接着我们继续往下走。第三个特色,第三个细节呢,也是我们呃,需要同学们一定要高度重视的啊,它是这样子的,他这样子的就是作用欲的原则。
18:06
那么在我们同一个文件里面,因为你可以创建多级包了,那这个就涉及到一个在包中相互访问。类的问题。那么在SKY的规则是什么呢?它是这样的,可以直接向上访问,怎么个意思呢?即开中的纸包啊,我们前提是在同一个文件夹啊,纸包中可以直接访问附包的内容。啊,什么意思呢,就是我纸包可以用你敷包里面的类或者object。那么大括号就体现出这个作用欲的范围,就是大括号其实在这边也可以当做作用欲来对待来对待,那么其示这有个提示啊,Java中的纸包要使用副包,内种必须import,但是开了不需要了。那么在纸包和复包内重名的时候采用。
19:01
它会默认采用就近的原则,如果希望指定使用哪个包,则带上包名即可,那句话什么意思呢?来同学们我们举例说明,我们举例说明来还以这个为例,还以这个为例啊,因为这个这个地方呢也比较好,同学们看。现在呢,我我这里有一个scanner,大家看清楚了,这个scanner我在这写了一个命命命方法,好同学们可以看到,那那我问大家一个问题啊,我问大家一个问题,Scner这个这个包是是不是com点艾特硅谷的纸包是不是是吧?那我问大家,我在这个开这个包里面用userr可不可以可以,因为我我刚才讲了吗,纸包可以用副包的内容,因此你在这用这个UR没有任何问题,看看一下啊来走一个我给用一下。这里。这里我们。
20:00
我们可以直接使用负包。附包这个附啊,附包的这个内容。那么你这个附报内容有个什么呢?你这不是有有个user吗?我直接拿来使用就可以了,比如说userr userr等于六一个user,你看我可以直接使用,我可以,但是我要清晰的告诉大家啊,这个地方的userr就是负类的。就是福利的。那有一个问题来了,有一个什么问题呢?就是同学们想,如果我本包也有一个user怎么办呢?那他会采用。这个就近原则打个比方,比如说啊,同学们。我在这儿再写一个user。Class user,好,同学们你们放心,这个时候这个user呢,就是我们这个SC的,我给大家打印一下。这边请大家注意一下,加上一个UR,我们运行一下,我们看看这输出的是什么。
21:02
我们一运行的话呢,我们可以看到这个地方,它打印的是这个纸包的UR,果然如此,那如果说我这个纸包里面,那我我这个纸包里面没有这个user。那么我用的就是副包里面的user。看看这个代码果然如此好,所以说我们在这呢,把这个点给大家标出来啊,标出来什么意思呢,就这样子的就是。啊,如果注意听啊,如果。如果负包啊,本就是说呃,如果有同名的同名的啊,同名的同名的包啊,同名的这个类,那么则采用采用就近原则。就近原则原则来访问,来访问这来使用这个内容。啊来使用这个内容,内容,比如说包啊,比如说包那有一个问题了,说老师那我假如就我就想你两个都有,但是我就偏偏想用。
22:08
附包的内容怎么办呢?指境啊,如果一定要就是要啊,就是要使用这个负包的内容,负包的这个这个类则指定,路径则指定。指定路径即可。即可,那么我我这样写啊,同学们现在看我现在又有一个USER2,但是呢,这次我就偏偏要用这个副类,这个地方的user也可以,那就这样写了,你把这个路径给我写全爱的硅谷点我们的user,呃,这个userr可以的。那这个时候呢,显然打印出来这个就应该是我们父类的那个userr,好看一下USER2等,呃,加上我们的USER2没毛病,我们运行一下。好,我们运行一下。看一下情况啊,同学们,当我们运行过后呢,你可以看到第一第这个USER2呢,用的就是我们副包的,那么user呢,仍然是我们本包的啊,反正是就近原则,好我相信这个举了一个例子,大家应该很清晰的知道了,如果这个不举例吧,就用纯用语言,其实很难很难有一个深刻的认识,好同学们,我把这个呢给大家放到这里来。
23:21
很好理解啊,这个很好理解,呃,那么我把这个细节。给大家放到这,我们这是第几个细节了呢?看一下刚才是第二一个,现在是第三一个。现在是第三个,需要同学们有一个印象的,好,第三个我就写到这了,那第三个对应的代码呢,我也给他拷贝过来。现在我都是在这个原文件上改的啊,没有办法,因为你要每个都取,取一个文件,文件名都不知道怎么取啊,所以说我只能这样子在上面修改,然后呢,呃,大家。把那个修改的地方,我给它标成一个特殊的颜色就可以了。我在这。
24:00
写上了。这句啊,这个这个特色标成红色的字体吧。好,这是我们讲的它的第三一个,呃,这个细节,好,我们先截取一段视频。
我来说两句