共计 1277 个字符,预计需要花费 4 分钟才能阅读完成。
第七章
7.1 包的基本概述
起因:
在我们设计一个程序的时候(尤其是多人合作),会写一些类来实现功能,但是往往会有重名的现象发生,为了解决这个问题,则专门设计了包。(还有其他作用,下述)
简单理解:不同的城市之间存在相同名字的小区,用城市名则可以区分这些重名小区,城市名就可以理解为上面的包,小区则可以看做是重名的类,通过这个前缀,解决了重名问题。
(1) 概念:
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。
其实可以理解为就是文件夹,并且使用了树形目录的存储方式。
(2) 作用:
A: 区分同名的类
B: 对类进行分类管理
a: 按照功能分——把功能相似或者相关的类或接口组织在同一个包中
b: 按照模块分
(3) 包的定义:
package 包名;
// 多级包用. 分开
(4) 注意:
A:package 语句必须在文件中的第一条有效语句
B: 在一个 java 文件中,只能有一个 package
(5) 带包的编译和运行
掌握——自动式 (Dos 中)
javac -d . xxx.java
// 可以使用 *.java 代表当前目录下的所有源文件
// 运行:
java 包名.HelloWorld
在 ecplise、ideal 等 IDE 中会自动的生成包名的结构
7.2 导包
当你需要使用一个包中的成员的时候,我们就需要在 java 程序中导入该包
如果两个类在同一个包中,则不必导包
格式:
第一种:
// 导入单个(推荐)import 包名;
注意:我们用谁就导谁。(尽量少用星号 * 如下)
第二种:
// 导入 java.io 下的所有类(不推荐)import java.io.*
注意:
// 前两句是否能用最后一句代替
import java.lang.*;
import java.io.*;
import java.*;// 无法代替上面两句,只能指向到单层的包中
注意:使用 java.lang 下的内容是不用导包的,具体可以查看 jdk-api
作用:
使用某一包中对应成员,并且简化书写
例如我们想使用 java.io 包下的 BufferedReader
我们可以
import java.io.BufferedReader
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
如果没有使用 import 导包
我们在使用 java 类库的时候,就需要写出该类的全路径名称,明显代码过于冗长
java.io.BufferedReader in = new java.io.BufferedReader(new FileReader("foo.in"));
7.3 权限修饰符
看完包的基本概念,我们也就理解了当初所讲权限修饰符的问题
本类 | 同一个包下 | 不同包下的子类 | 不同包下的无关类 | |
---|---|---|---|---|
public | Y | Y | Y | Y |
protected | Y | Y | Y | |
默认 | Y | Y | ||
private | Y | |||
这四种权限修饰符在任何情况下只能出现一种 |
结尾:
如果内容中有什么不足,或者错误的地方,欢迎大家给我留言提出意见, 蟹蟹大家!^_^
如果能帮到你的话,那就来关注我吧!(系列文章均会在公众号第一时间更新)
在这里的我们素不相识,却都在为了自己的梦而努力 ❤
一个坚持推送原创 Java 技术的公众号:理想二旬不止