00:00
诶,我们的第四章面向对象呢,最后还差两个关键字,诶这两个关键字呢,我们给大家讲一下,这也是咱们讲面向对象的三条主线的第三条,哎,还是涉及到叫提下其他这个关键字的使用,呃,前面呢,我们讲了一个这次关键字,呃这呢我们来谈一谈package和import,诶关键字呢,我们说过了,就是Java的语言赋予特殊含义的字符串或者叫单词,那package和importt呢,实际上咱们都已经开始使用了啊,只是呢没有,呃,这个正式的引入来这两个关键字,以及他们使用的一些细节啊,那咱们现在呢,就相当于正式的来说一下啊,那首先呢来说一下package,然后呢,我们再来讲这个import,啊这块呢,我们直接呢,就写一个代码来体会,在这个JAVA2里边,诶,我新建一个class,哎,就叫做package和import的一个测试,哎,就这样了啊。嗯,首先的话呢,我们来说一下这个package关键字的使用。
01:07
哎,Package啊,首先的话呢,这个package呢,这个很多时候这个关键字我们都爱翻译一下啊,这个package呢,翻译过来就叫包。啊,就要包,为什么要引入这个package呢?先提一下啊,就是咱们写的一个Java程序,或者说呢,叫一个Java的项目,就比如说咱们这个DAY10为例啊,咱们下边呢,这个其实写了很多的Java类啊,那这个Java类呢,如果我们要混合在一起的话呢,就会显得很乱啊,尤其呢,像像一个项目呢,含的这类比较多的时候啊,几十个,几百个甚至上千个类的时候,那你要是没有一个统一的结构进行一个管理和区分的话呢,那就非常的乱,难以进行维护啊,那我们就为了呢,更好的啊对项目当中这个类呢进行管理,咱们就提出了一个概念叫做包啊。
02:01
啊,为了更好的实现啊,项目中这个类的管理,那么就提出包的概念啊,那这个包呢,就是咱们这里所说的这个package啊,就是这个关键字了啊就是我们呢,就会在一个项目当中去创建多个不同的包。哎,我们呢,可以按照这个功能去区分啊,哎,分成多个不同的包,然后呢,我们写的这个类呢,就放在这个不同的包下啊,这样呢就有一个管理这样的一个概念了啊,就这样的一个概念啊,行,就像咱们这个,呃,大家来商务学习的同学一样啊,这个如果所有的学生都都混到一起,这就很乱了,那咱们呢,可以按照大家所学的这个专业方向的不同,然后呢,进来的时间的不同,咱们就分成不同的专业,然后不同的这个起始点的这样的一个班级啊,那一个班级呢,就好比是我们的一个package。啊,这样的话呢,就能够更好的去进行管理啊,大家呢,是哪个方向呢,你就进哪个哪个方向啊,哪个时间节点呢,你就进入对应那个节点的那个班级啊进行学习就可以了啊所以这个事儿的话呢,其实不难理解啊,那么具体的话呢,关于这个age的使用,在我们具体这个原文件当中,哎,我们来讲一讲啊,首先呢,这个package咱们去声这个包啊,使用package啊去声明这个啊类或者是后边咱们还会讲一个概念叫做接口啊,诶使用package来声明类或者接口所属的这个包。
03:31
啊,写到哪儿呢?我们说声明在这个原文件的首行。哎,生明在我们原文件的首行,所以大家呢,会看到我们一进来的时候,这个原文件呢,每一个的首行呢,都是写的叫package啊,毫无例外呢,都是如此,这里边呢提到叫做首行,首行呢指的就是说呃,一上来就写就完了,像这种情况啊,比如我这有画了几行,这呢也算叫首行。
04:01
啊,这也算叫首行,我们ctrl shift到F以下。啊,这个很诡异啊,他给我们收回去就行,但是也没收到头是吧?啊,就看着呢,稍微这个松快一点,舒服一些就行啊,顶到头呢,可能看着还不太舒服啊,但总之呢,就是只要你一上来写它就可以,至于说前面有没有空格呢,换行呢,其实无所谓啊,这是这样个情况啊,后边呢,咱们还会讲一个技术叫做叉帽啊,这个叉帽的话呢,呃,都是一对对这个标签了,这个叉帽呢,上来也得先声明一个,呃,你使用的这个版本号啊,使用的字符集啊等等这个问题,它呢也会有一个首行的一个声明,它那个首行那是真的是首行。对,当你试图给他换一个行,让他出现在第二行的时候呢,就都报错了啊对他就是更要求更苛刻一些啊,咱们这里呢,说的首行就只要你上来就先写就完了啊,就OK啊行,这是第一个事儿,呃第二个事儿,第三个事儿的话呢,就这个package呢,咱们叫包了,包呢我们说属于标识符,哎属于标识符,那既然呢属于标识符,那就需要呢遵循。
05:09
嗯,遵循这个标识符的命名规则和规范。啊,规范啊,同时呢,咱们还提到叫建明之意。啊,贱名之意啊,命名规则,命名规范这里边呢,就提到了,这个规则呢,就咱们讲的那个必须要遵守的了啊,哎,这个26个英文字母啊,大小写啊,下划线啊,数字不能开头啊等等这样一些规范里边呢,我们提到了像这个包名。对,是不是都是这种小写啊啊,就是比如xxx啊,YYY啊,ZZZ啊,都是小写这种方式啊,哎,这个你注意一下,不管咱们自己现在写的啊,我这块呢,就刻意的去注意了,遵循了,而且我们看到这个API呢,给我们提供的这一类呢,也是一样啊,人家呢,在最上边也会提供说它是哪一个包下的,哎也无一例外呢,都是这种小写的方式啊,你回到这个位置,你看嗯,再往前。
06:09
哎,像这这都是我们Java呢提供的API,这都是这些包啊,都是小写的。啊,都是小型的,那所谓的剑鸣之意呢,就是尽可能的我们,呃,通过这个包名呢,大概也能知道里边你到底是要干什么。啊,像这个叫circle。啊,Circle就是跟数据库操作相关的啊,就都放在这里了啊,这个test啊,这涉及到一些国际化的一些文本处理相关的就放在这儿了啊这呢涉及到时间相关的啊,就放在这个test呃,Time下边了啊,时区相关的啊,这是工具类啊等等等等,就是你看到这个相应的这个包名呢,大体上就能知道它大概是要做什么的。诶,当然呢,我们也没有必要呢,把Java的API呢,所有的每一个都研究清楚啊,每一个里边呢,又含有哪些类啊,又都研究清楚,这个是用不着的。啊,就是咱们开发中需要用到哪些呢,我们就过来熟悉哪些有些类或者是一些接口,你是这辈子你也用不着啊,这是很正常的啊行,这呢叫建明之意啊,咱们现在的话呢,跟大家也说,我这这个写Java的呢,就是咱们新课的知识啊,EX2呢,就是写的这个练习了啊,就是大概有这样的一个概念啊回头呢,咱们写项目的时候呢,那一定要也要遵循这样的一个意思啊,这是第三个事儿啊,那第四个事儿呢,这里边就提到一个这种点的这种结构啊,诶大家呢,会看到我这里边呢,咱们写这个包名,并不是真正的说,呃,这个叉叉叉啊,YYYZZZ啊就完了,我们呢会有这种点。
07:37
哎,这里边儿我们就提到说每点一次。对,每这种点一次啊,我们呢,就代表一层文件目录。哎,代表一层文件,哎目录,那那咱们从这看的话呢,呃,不是这么明晰了哈,你看到的话,它们都是这种并列结构的,但是如果我们从这个啊na位gitar这块啊,导航栏这块去看的话。
08:04
哎,咱们找到咱们这个DAY10啊,前面这个都关一下啊,DAY10SRC是源码,你看这时候com啊,这是一层爱的硅谷一层啊,下边呢,我们写的就是每一层。诶,每点一次就是一层文件目录啊,这儿呢,其实就已经能够看清楚了啊,或者的话呢,你再回到咱们整个啊,咱们代码都写到这个workspace这个位置了,哎,这10SRC啊,Com一下,哎,圭舞一下啊这样哎,就是每点一次代表一层文件目录啊,就这样的一个意思,行,那关于这个package的话呢,比较简单,就是我们现在说的这样的一个事情。啊,这样的事情啊,呃,那这个其实也不完全算是这里边儿的一个内容啊,算是一个小的一个补充。补充啊,这个想说什么事呢?说一下这个事儿哈,就是咱们呢,这个同一个这个包项哈,哎不能够命名同名的结构啊,哎同名的比如说你这个接口或者是类。
09:11
诶,同一个包下不可以命名同名的接口或者类,诶就是我们这个,比如EXE2下,我定义一个叫triangle了,我再定一个是不是就不行了。嗯,你看这时候说already exist。哎,这就不允许了,这这很好理解吧,对你像你这样定义俩透明的,你在你自己这边用可能有问题,我要在其他的这个包下想用这里都不知道用的是谁。啊,这是不允许的哈,那么那这个同一个包下不能命名了,那不同的包下可以吧,对啊,不同的这个包下哎可以命名啊,这个同名的接口啊,哎同名的这个接口哎或者是类哎这个是没有问题的哈,就是其实呢,它就是这个呢,我我为什么写个补充呢,它不是说完全属于我们这个package的这个事的哈,你一个包,你比如说你在这个ESC2下,你想去命名,这不就是咱们那会儿说到这个一层文件目录吗?一层文件目录下,你想定义同名的这个,咱们在Windows下,在什么下边,它都不允许这样干呀。
10:18
是吧,其实是因为这个事儿啊,就不是完全说借助于说是因为包不让你这样做了,文件目录下的本身就不让你定义这种透明的事儿,不同的文件目录了,那你爱定义你就定义透明的无所谓。啊,而且呢,我们在调用的时候呢,也不会冲突啊,比如说呢,你看我们这个E13,咱们写了这个account ec4呢,我也写了叫account,比如说呢,我在这个ec下二下我想去用account了。那你想用谁的是不是就倒谁就可以了,对,所以它也不会有冲突的问题啊,所以这块呢是没有问题的啊,诶这个大家关注一下,行,这呢就是咱们说的这个package关键字,呃,然后在这个PPT里边呢,呃,这也列出来了,咱们JAJDK当中,呃,Java里边呢,提供的主要的一些包,大家呢,有一个印象啊,比如说这个浪包啊,浪包就是咱们使用的Java的一些核心类。
11:13
啊,这个浪呢,实际上是那个language的一个缩写了,啊,就是这个语言包啊,String啊,Mass啊,啊后边我们讲的包装类啊,System啊,Thread呀等等这都是。啊,Net跟网络操作相关的,IO呢,跟输入输入相关的啊,YouTube一些实用的工具类啊,像scanner aris哎,都是属于YouTube下的啊test啊,跟格式化相关的,Circlel跟数据库操作相关的a wt啊跟这个诶我们显示一个这个这个客户端界面相关的。那这就涉及到我们一开始讲课的时候提过这个BS和CS架构啊,这个我们用Java呢,其实也可以来写这个桌面级的应用啊,如果你想出一个具体的一个客户端啊,那我们需要用到这个a wt啊,但是现在的话呢,我们用Java去写客户端呢,就很少用了,所以这块呢,反正你要是买书看到有这个a wt GI相关的呢,这个大家都可以先忽略掉了,咱们基本上都是通过浏览器来访问的后台这个Java啊,所以涉及到这个客户端这块呢,Java的一些API呢,我们暂时呢就先不用看了。
12:19
啊,其他几个呢,大家关注一下诶,这个每个包大概是做什么的就可以,后边儿呢,咱们也都会接触到啊。
我来说两句