当前课程知识点:Java程序设计 > 第二章 类与对象 > 2.2-4-包 > 2.2-4-包
大家好
欢迎回来继续学习
java语言程序设计
这一节我给大家介绍包
什么是包呢
包我们可以认为
它是一组类的集合
一个包中呢可以包含多个类
多个类文件
还可以再包含多个子包都可以
包的作用呢
一方面是将相关的源代码文件
组织在一起
另外呢他还有一个类名的
命名空间的管理
因为当我们程序
规模比较大的时候
并且呢还要用到很多
(域地域库)的时候
那么那么多名字
他们之间会不会发生重名呢
重名是很可能发生的
为了避免重名
我们可以利用包
来划分名字空间
将一组一组功能相关
或者是由同一个机构开发的
这种类呢
放在各个不同的包里面
不仅如此
在java里面
包还提供了一级
封装以及存取权限的控制
现在我们来看包怎么命名
每个包的名字呢
他必须是独一无二的
也就是说我们用这个包
是为了解决命名空间的问题
那么如果连包名都重了
那不是一切都是惘然了吗
所以首先我们要保证
包名不重
在java中呢
我们一般来说
使用小写字母
表示包的名字
java为我们建议的命名方式呢
是将机构的Internet域名
进行返序作为包名的前导
因为Internet域名
它是独一无二的
那这样的话呢
你的包名的前导
就是唯一的了
那么如果包名中
有任何不可以用于
标识符的这种字符
怎么办呢
我们可以用下划线替代
如果包名中的任何部分
与你定义的关键字冲突了
那么我们就把
这部分的后缀给下划线
如果包名中的任何部分
他是以数字或者其他的
不能用作标志符的
这个字符开头的
那么我们就可以
前缀一个下划线
作为开头
在java程序中呢
是将一个java语言文件
称作一个编译单元的
一个编译单元呢
由三部分组成
首先最开头是所属包的声明
那么在前面很多例题中
我们看到没有声明属于什么包
也就是省略了
省略了的话呢
就都属于默认包
然后呢是引入包的声明
如果你需要
使用其他包里面的类呢
可以用import来导入
然后接下来
才是你自己定义的类和接口
一个编译单元中
只能有一个public类
那这个类的类名
与文件名必须是相同的
那么编译单元中的其他类呢
往往是public类的辅助类
所以呢那些其他的类
如果你要放在同一个文件里面
它必然是起辅助作用
如果它也要独立的
对外提供服务
不是起辅助作用的
那你就不要与
另外一个public类
放在一个文件里面
因为它不能存在
两个public类
那些辅助的类呢
就不加public类
我们叫它缺省的(英文)类
那它就是在这个内部
起辅助作用
但是经过编译以后
每个类都会产生一个
独立的后缀class的文件
即使你是编译单元中
非public那个类
它也会独立的
生成一个class文件
那首先我们来看
怎么声明一个包
就用package这个关键字
package后面跟上
我们自己的包名
就可以了
那么默认包呢
实际上就是未命名的包
所有不含有包声明的
编译单元
都放到默认包里面去了
那么包与目录有什么关系呢
有很直接的关系
每个包他都对应一个目录
也就是文件夹
但是每个目录
不见得对应一个包
我们要引入包
是为了使用包里面
提供的这些类
这时候需要用import语句
来引入
我们前面写的一些简单程序
没有引入
那么他也可以运行
也可以用系统库里面的内容
其实系统库里面
很多常用的内容呢
都放在java点lang
这个包里面了
java的编译器
会自动为所有的程序
引入java点lang这个包
那么如果我们需要引入
更多的其他的包呢
就需要我们自己写import
我们可以写import
这个包名
这个包名呢可以是多级
我们说了Internet域名的返序
那不就什么点什么点什么多级
如果你要引入这个包里面的
某个类名
你就在最后把类名写在这
如果你要引入
这个包里面的所有的类
你可以使用星号
我们在上一节中
学习的静态成员
如果我们要在内外
使用一个类的静态成员的话
怎么用呢
我们要用类名点静态方法名
这样来使用对吧
如果我们大量的使用
某些静态方法的话
老带着类名
其实也挺累赘的
能不能简单点儿
不带着类名呢
就像我们在C语言中
去用一个函数一样
我直接写它的函数名
可不可以呢
如果想这样做的话呢
也有办法
这就是静态引入
静态引入
可以是单一引入
也可以全体引入
单一引入呢
指的是引入类中的某一个
指定的静态成员
比如说我们就引入
java点lang点math
里面的静态成员π这个常量
可不可以呢
我们就这样import static
这样引入就可以了
如果我们想引入
里面的所有静态成员
我们最后就用一个星号就行了
那我们看这个例子
引入了这个静态成员π以后
我们在程序中
就可以直接使用π了
就不用再带他的类名了
这样就方便了很多
-1.0-导学
--1.0-导学
-1.1-Java与面向对象程序设计简介
--第一章 Java语言基础知识--1.1-Java与面向对象程序设计简介
-1.2-基本数据类型与表达式
-第一章 Java语言基础知识--1.2-基本数据类型与表达式
-1.3-数组
--1.3.1-数组
-第一章 Java语言基础知识--1.3-数组
-1.4-算法的流程控制
--第一章 Java语言基础知识--1.4-算法的流程控制
-1.5-第一章小结
-第一章编程练习题
-课件
--外部链接
-Java环境配置、Eclipse使用、Helloworld程序详解
--使用eclipse建立Java项目、编写和运行Java程序
-Java数据类型
--Java整数类型
--Java浮点类型
--数据类型实战
--数据类型转换
--Java强制类型转换精度损失示例与表达式中的数据类型转换
-Java数组
-Java变量
--Java的变量
-命令行参数
--命令行参数的介绍
-2.0-导学
--2.0-导学
-2.1-面向对象方法的特性
--第二章 类与对象--2.1-面向对象方法的特性
-2.2-1-类声明与对象创建
--第二章 类与对象--2.2-1-类声明与对象创建
-2.2-2-数据成员
--第二章 类与对象--2.2-2-数据成员
-2.2-3-方法成员
--第二章 类与对象--2.2-3-方法成员
-2.2-4-包
--2.2-4-包
--第二章 类与对象--2.2-4-包
-2.2-5-类的访问权限控制
--第二章 类与对象--2.2-5-类的访问权限控制
-2.3-1-对象初始化
--第二章 类与对象--2.3-1-对象初始化
-2.3-2-内存回收
--第二章 类与对象--2.3-2-内存回收
-2.4-枚举类
--2.4-枚举类
--第二章 类与对象--2.4-枚举类
-2.5-应用举例
--2.5-应用举例
-2.6-第2章小结
-第二章编程练习题
-课件
--第二章课件
-3.0-导学
--3.0-导学
-3.1.1-3.1.2-类继承的概念和语法
--第三章 类的重用--3.1.1-3.1.2-类继承的概念和语法
-3.1.3-隐藏和覆盖
--第三章 类的重用--3.1.3-隐藏和覆盖
-3.2-Object 类
--第三章 类的重用--3.2-Object 类
-3.3-终结类与终结方法
--第三章 类的重用--3.3-终结类与终结方法
-3.4-抽象类
--3.4-抽象类
--第三章 类的重用--3.4-抽象类
-3.5-泛型
--3.5-泛型
--第三章 类的重用--3.5-泛型
-3.6-类的组合
--3.6-类的组合
-3.7-小结
--3.7-小结
-第三章编程练习题
-课件
--课件
-4.0-导学
--导学
-4.1-接口
--接口
--第四章 接口与多态--4.1-接口
-4.2.1-4.2.2-类型转换
--类型转换
--第四章 接口与多态--4.2.1-4.2.2-类型转换
-4.2.3-方法的查找
--方法的查找
--第四章 接口与多态--4.2.3-方法的查找
-4.3-多态的概念
--多态的概念
--第四章 接口与多态--4.3-多态的概念
-4.4-多态的应用举例
--多态的应用举例
--第四章 接口与多态--4.4-多态的应用举例
-4.5-构造方法与多态性
--构造方法和多态性
--第四章 接口与多态--4.5-构造方法与多态性
-4.6-本章小结
--本章小结
-第四章编程作业
-课件
--课件
-5.0-导学
--5.0-导学
-5.1.1-5.1.2-异常处理的概念
--第五章 输入输出--5.1.1-5.1.2-异常处理的概念
-5.1.3-5.1.5-异常的处理
--第五章 输入输出--5.1.3-5.1.5-异常的处理
-5.2-输入输出流的概念
--输入输出流的概念
--第五章 输入输出--5.2-输入输出流的概念
-5.3.1-写文本文件
--写文本文件
--第五章 输入输出--5.3.1-写文本文件
-5.3.2-读文本文件
--读文本文件
--第五章 输入输出--5.3.2-读文本文件
-5.3.3-写二进制文件
--写二进制文件
--第五章 输入输出--5.3.3-写二进制文件
-5.3.4-读二进制文件
--读二进制文件
-5.3.5-File类
--File类
-5.3.6-处理压缩文件
--处理压缩文件
-5.3.7-对象序列化
--对象序列化
-5.3.8-随机文件读写
--随机文件读写
-5.4-本章小结
--本章小结
-课件
--课件
-6.0-导学
--导学
-6.1-Java集合框架介绍
--第六章 对象群体的组织--6.1-Java集合框架介绍
-6.2-主要接口及常用的实现类
--第六章 对象群体的组织--6.2-主要接口及常用的实现类
-6.3-常用算法
--常用算法
-6.4-数组实用方法
-6.5-基于动态数组的类型(Vector, ArrayList)
--基于动态数组的类型(Vector, ArrayList)
-6.6-遍历Collection
-6.7-Map接口及其实现
-6.8-第6章小结
--第6章小结
-课件
--课件
-7.0-导学
--导学
-7.1-绘图
--绘图
-7.2-Swing基础
--Swing基础
-7.3-Swing的层次
--Swing的层次
-7.4-布局管理
--布局管理
-7.5-内部类
--内部类
-7.6-事件处理的基本概念
-7.7-事件派发机制
--事件派发机制
-7.8-顶层容器
--7.8-顶层容器
-7.9-中间层容器(一)
-7.10-中间层容器(二)
-7.11-原子组件(一)
-7.12-原子组件(二)
-7.13-原子组件(三)
-7.14-其它Swing特性
-7.15-第7章小结
-课件
--课件