趣文网 > 作文大全

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

2020-12-02 04:30:02
相关推荐

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

那大家看到这一篇说明大家已经很努力了,也希望大家能继续跟下去,如果有必要我可以抽时间出视频,因为工作和家庭原因,暂时实在是没精力做视频,所以大家先看文章吧!推荐大家一本书教父级别的书《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岁以上小朋友讲的,尽最大努力讲得简单明白。所以例子会很多,但是大家也是需要细心的,因为代码这个东西,一个标点符号都会造成运行不起来,但是大家也别气馁,慢慢习惯就好了,大家只要敲上一个月代码,这些就都不是事儿了。好了,大家加油。

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

台阶作文 自然风景作文 谦让作文 路口作文 底气作文 雅思作文范文 我多想作文 全国高考作文 父亲节作文 小学写景作文 家长会作文 作文我的心爱之物 小学生作文范文 提醒作文 语文小作文 二年级作文大全 感恩作文素材 星期天作文 我的朋友英语作文 难题作文 路灯作文 父母的爱的作文 我的家人作文 小制作作文 七夕作文 奥运会作文 小小作文 作文秋 万能作文模板 考研 英语 作文