您的位置 首页 java

详解Java中包(package)的概念,新手也能看懂,内含实例

嗨,又见面了,我是你的老师父,那大家前面可能遇到各种各样的问题,但是大家不要着急,可以留言大家共同来讨论,来解决,闭门造车是学不好编程的,大家要相信自己,也要相信共同学习的小伙伴,同样也要相信你的老师父,多多沟通是很重要的。

那大家看到这一篇说明大家已经很努力了,也希望大家能继续跟下去,如果有必要我可以抽时间出视频,因为工作和家庭原因,暂时实在是没精力做视频,所以大家先看文章吧!推荐大家一本书教父级别的书《 java 编程思想》,这本书适合有一定编程基础的人,但是大家可以买来先看看。

上一章留了个作业,还记得不?

“你的老师父开车去买橘子”需要创建水果类、人类、交通工具类,来完成这个场景,打印出这句话来!

那我来给大家实现一下 ,看跟大家写的是不是一样

1、首先新建三个类:

水果、人类、交通工具类。

2、之后每个类写代码如下

水果类:

交通工具类:

人类

车和水果类比较简单,因为就一个属性和一个构造方法,属性就是车的类型和水果的名字。

那人类就比较复杂了,因为人要去开车去买水果,那首先他得有车,所以你造人的时候也就是新建对象的时候,不仅要告诉他叫什么,还得告诉他有哪辆车。

因为买橘子呢是个动作,买完才是他的,所以有个买水果的动作,需要把橘子给他,他才能有。所以这是buyFruit()这个动作。

那他说话呢,想说什么就直接System.out.println()出来就好了,代码中是让他说:谁开什么车去买什么。所以最后say的时候打印结果如下:

好了作业做完了,有问题留言评论或者私信吧!

那今天咱们讲点新东西。

什么是“包名”

开始之前还是得说个例子!

咱们这几天一直在造人、造人和造人,那那么多Person类,有的有名字有性别,有的又只有名字,那我是不是代码删了写,写了又删?有没有办法这个同样的Person类都存在呢?

那有人一激灵说这还不好说,多建几个类不就好了?

好,我给你试试啊,你看着:

诶?File already exists?什么意思?文件已经存在!

是的,因为你已经有了Person了啊。

那怎么办?

我问你,你在电脑上两个相同的文件放在一起是不是也是会提示是否要覆盖?那你如果不覆盖,只能改名字了。还有个方法,就是放在不同文件夹中,是不是?

那java项目中也是可以分不同文件夹的。只不过java中类的文件夹不叫文件夹,叫 “包名”

英文单词:package,那package还有个意思就是打包的意思,所以你可以理解为这个文件加,就是打了一个包裹,就跟快递包裹似的,你买了好多东西,不同商家是不同的包裹,每个包裹放的东西是不同类别的。

java中也是这个意思,包中放的基本上都是同一类的东西。比如放汽车类,有Car,有Bus,有MiniBus,有Taxi是不是

好了,说这么多,其实就是一个文件夹而已!记住在Java中叫做包。

那说说这个包怎么建?

首先命名规范:

1、不同路径通过点(.)来分割,比如下图的这个目录/cn/craaaaazy,包名的话就是cn.craaaaazy了

2、由字母、数字下划线组成,不能以数字开头

3、全部小写

4、一般使用域名反写来命名包,为了保证包名唯一性,一般是用域名反写来做包名的,比如下图:

这个就是域名反写起的包名,其实是两个文件夹,一个是cn,另外一个文件加是craaaaazy,那你去这个项目目录看,其实是两个文件夹。

注意:

一般路径会这么些E:libcglib 或者这么写/root/bin

但是java这个编码工具中,是通过英文的点(.)来作为路径分隔符的比如上边两个路径如果做为java的包的话,在开发工具中会显示成lib.cglb或者root.bin

在编辑工具中有个办法把文件夹都展开,看我操作:点击这个设置按钮,把第二个选项的这个对钩去掉:

那看下边这个是不是已经展开了

这样你也可以在cn中创建类文件了。

那说了这么半天,怎么用呢?

相信大家都会建类了。我还是说下吧。想要把类建在哪个包中,就直接在包名上右键,然后一顿选,选New,选Java Class,后边的操作我还用说吗?就是填入类名,就确定就行了。看下图

看我一通操作,建了这么多类,当然,文章开头的例子,我是在一个我已经建好的包中写的。

那上图右边代码部分,看看注释说明。

首先代码是Person类,这个类在cn.craaaaazy这个包中。

1、 package 关键字:

首先 第一行 要写上package 你这个类的包名,当然这个编辑器很强大,自动就给创建好了。

记住这个其实是目录,但是java是通过点(.)来做分割的这是JVM编译器决定的。

例如:package cn.craaaaazy; // 注意这最后是有分号的。

2、 导入类

什么是导入?

说这个问题之前先问大家,类和文件的概念大家清楚不?我给大家截个图:

看到没,右边是这个包的实际文件目录

那右边目录中的java后缀的文件,这就是咱们项目中的你看到的这些类,他们其实是文件!

打开这两个文件看看

一般文件名和类名都是一样的,就像上边的Person,那也有特殊的,比如下边这个

Test.java文件中包含两个类,Water和Tea,他们和文件名不同。注意:这两个类不能写public关键字,因为public的类必须要和文件名保持一致!

那大家应该知道文件名和类名不一定要一样,一个文件中是可以写多个类的。大家可能在想,那这跟我导入类有什么关系?

那我解释下导入的概念吧,举个例子,大家喝水用水杯喝,那如果水杯没有水,是不是喝不到?你得把水倒入水杯,水杯才有水是不是?

那如果我想喝茶呢?是不是要再把茶放进去?是的,没错。

倒入水、茶叶的过程其实跟Java的导入一样。你可以把文件看做是水杯,那类就是茶叶和水,看Test.java文件中Test.java就可以看做水杯,那Tea和Water就是茶和水。这是茶和水本身就在水杯的情况。

那如果茶和水开始并没有在水杯呢?看下图

那你怎么喝茶水?

那这个时候你就得倒进去啊?在Java中就是通过 import 导入的

导入其实和直接写在java文件中是一样的,编译器最后都会把他们写在一起。

那我还是用Person这个类来讲import吧。

三种导入类方式

a、通过 import 导入完整的类路径

在你使用比如Bus类的时候,要通过import关键字导入这个类

怎么写呢,就是这个类的完整路径,同样也是(.)分割的

比如:

import cn.craaaaazy.car.Bus; // 注意这最后也是有分号的

b、通过 import 导入包路径

比如你使用了某个包的所有类,你可以这样写

import cn.craaaaazy.fruit.*;

那cn.craaaaazy.fruit是一个包名,这个包中存放了所有的水果类,如果我都要用,那我得一个一个把类导入进来(在以前没有自动导入这么强大的编辑工具的时候,工作是相当乏味的!)

那如果不一个一个导入进来就需要使用 通配符 了,这个通配符就是星号(*)。

这样一个是省去了很多麻烦,另外也降低了代码量。

c、 通过完整路径的方式使用类

比如我使用了work包中的这个Person类,其实是没办法通过import再把Person类导入进来了,刚才讲水杯、茶叶和水的时候说来着,import导入类的过程其实和直接写在Java中是一样的,所以,你如果把work.Person导入进来,那其实就是在这个类中又写了个Person,那编译器其实是不知道你要用哪个Person的,所以,不能直接通过import导入!

那我要用怎么办?

可以在你用的时候,写上完整的类路径,比如

work.Person person = new work.Person(“小名”, transport);

那这样其实没有导入类就可以用了。

那基本讲完了,其实使用就是这么简单。细心一点,一定要细心,好好看我代码。不行就复制粘贴。

如果遇到问题,一定要留言评论,还是那句话,我这是给12岁以上小朋友讲的,尽最大努力讲的简单明白。所以例子会很多,但是大家也是需要细心的,因为代码这个东西,一个标点符号都会造成运行不起来,但是大家也别气馁,慢慢习惯就好了,大家只要敲上一个月代码,这些就都不是事儿了。好了,大家加油。

文章来源:智云一二三科技

文章标题:详解Java中包(package)的概念,新手也能看懂,内含实例

文章地址:https://www.zhihuclub.com/191459.shtml

关于作者: 智云科技

热门文章

网站地图