网站首页 > java教程 正文
- 包机制
- 包的定义和导入
为什么需要包?
windows树形文件系统
文档分门别类、易于查找和管理
使用目录解决文件同名冲突问题
如果存放2个同名的类而不冲突?
使用包:package
包对应java源文件的目录结果
包的定义
包的命名
1、包名有小写字母组成,不能以远点开头或结尾
package mypackage;
2、包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名
package net.javagroup.mupackage;
3、包名后续部分,依不同机构内部的规范不同而不同
包的作用
1、允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件
2、防止命名冲突,区分名字相同的类
3、有助于实施访问权限控制
import导包
1、为了使用不在同一包中的类,需要在java程序中使用import关键字导入这个类
import 包名.类名
例如:
import java.util.*; //导入util下所有包,*是通配符
import com.liergou.Book; //导入指定包中指定类
import导包
使用包的注意事项
1)一个类同时引用了两个来自不同包的同名类,必须通过完整类名来区分
每个包都是独立的,顶层包不会包含子包的类
package和import的顺序是固定的
1)package必须位于第一行(忽略注释行)
2)只允许有一个package语句
3)其次是import
4)接着类的声明
- 系统常见包
在java众多的API中,目前使用较多的jar包如下表所示:
包名 | 内容概述 |
java.lang | 提供java语言程序设计的基础类 |
java.util | 提供处理日期、时间、随机数生成等各种使用工具的类 |
java.io | 提供输入输出相关的类 |
java.net | 提供实现网络操作相关的类 |
java.sql | 提供使用访问并处理存储在数据库中的数据的API |
java.nio | 为输入输出提供缓冲区的类 |
java.text | 提供处理文本、日期、数字和消息的类和接口 |
java.awt | 包含用于创建用户界面和绘制图形图像的所有类 |
java。swing | 提供一组与AWT功能相同的纯java的组件类 |
java.lang.*
java.lang包是java语言体系中其他所有类库的基础,已经内嵌到java虚拟机中,而且以对象的形式创建好了,所以我们在使用java.lang包时不需要再使用import将其导入,可以直接使用java.lang包中的所有类,以及直接引用某个类中的常量、变量和方法
lang包下常用的类
1)String:封装了与字符串类型相关的操作方法
2)class:用于描述正在运行的java应用程序中的类和接口的状态
3)classloader:用于加载类的对象
4)enum:用于定义枚举类型
5)math:用于实现基本数学运算
6)number:抽象类,是基础数据类型的父类
7)object:所有java类的根类
lang包下常用的类
1)package:封装了有关java包的实现和规范的版本信息
2)runtime:runtime类对象试java应用程序 与其运行环境相连接
3)stringbuffer:用于可变字符串的操作
4)stringbuilder:创建可变的字符串对象
5)System:封装了一些与java虚拟机系统相关的方法
6)Thread:创建和控制线程
7)ThreadGroup:创建和控制线程组
8)Throwable:定义了java中的所有错误或者异常的父类
9)Process:定义一个进程process对象,通过Runtime类中的exec方法启动该进程对象
lang包下常用的接口:
Appendable:用于追加字符串
Cloneable:用于复制类对象
Runnable:用于实现类对象具有线程功能
Comparable:用于类对象的排序
java.utli.*
包含集合框架,collection类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组、日期Date类、堆栈Stack类、向量Vector类等)集合类、事件处理横式、日期时间工具等各类常用工具包
java.io.*
java的和辛苦java.io提供了全面的IO接口,包括:文件读写、标准设备输出等。java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流、或者从输入流读入。
- 创建jar包和引用
eclipse导入jar包
eclipse导出jar包
- 访问权限控制
在java中,针对类、成员方法和属性提供了四种访问级别,分别是private、default、protected和public。
private(当前类访问级别):对于私有成员变量和方法,只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员变量和类中的私有方法
default(包访问级别):类的成员变量和什么方法修饰符都没有,又叫包修饰符,只有类本省成员和当前包下类的成员可以访问
protected(子类访问级别):用protected修饰的成员变量和方法能被该类的成员以及其子类成员访问,还可以被同一个包中其他类的成员访问
public(公共访问级别):这是一个最宽松的访问控制级别,如果一个类或者类的成员被public访问修饰符,那么这个类或者类的成员能被所有的类访问,不管访问类与被访问类是否在同一包中。
修饰符/作用域 | 同一个类中 | 同一个包中 | 子类中 | 任何地方 |
private | 可以 | |||
default | 可以 | 可以 | ||
protected | 可以 | 可以 | 可以 | |
public | 可以 | 可以 | 可以 | 可以 |
注意:
default和protected的区别
default修饰:本类可以访问 ,同一个包中其他类可以访问,同一个包中子类可以访问,不在同一个包中子类无法访问
protected修饰:本类可以访问,同一个包中其他类可以访问,同一个包中子类可以访问,不在同一个包中子类可以继承访问
private展示
private只能在本类中访问,因为那么是私有的,所有TestPerson没有访问权限
default
int是默认访问权限,所以同一个包中的其他类可以访问,当前的子类student在同一个包中,可以访问到age,不在同一个包中,是访问不到
protected修饰
age是protected修饰,本类中正常访问
不同包下的子类,不能通过父类对象直接访问
用protected修饰的属性,子类可以继承过来,不在同一个包下也是可以继承访问到的
用protected修饰的属性,虽然student是person的子类,但不在同一个包下,无法访问
public修饰
哪里都可以访问
本类可以访问
同一个包下,其他类也可以访问
同一个包下,子类也可以正常访问
其他包下,其他类可以访问
访问界别
private---》default---》protected---》public
--------访问控制级别由小到大-----》
编写代码时,如果没有特殊的考虑,建议这样使用权限
1)成员变量使用private,隐藏细节
2)构造方法使用public,方便创建对象
3)成员方法使用public,方便调用方法
- 内部类
- 普通内部类的定义
- 局部内部类
- 静态内部类
- 匿名内部类
猜你喜欢
- 2024-09-08 JavaWeb项目各种随机数主键ID的代码范例供大家参考学习
- 2024-09-08 Java中List集合有哪些特性?Java开发常见集合
- 2024-09-08 这么一篇.Java性能权威指南.不需要好好的了解一下吗?
- 2024-09-08 一篇文章彻底弄懂CAS实现SSO单点登录原理
- 2024-09-08 Java练习:输出并统计水仙花数、猜数字小游戏
- 2024-09-08 Javaweb代码创建JESESSION32位随机数及session最大不活动时间
- 2024-09-08 Java 中生成一组不重复随机整数的简便方法
- 2024-09-08 JDK 17 - Java 17 的新特性速览(java的什么特性实现了软件开发人员一次编写)
- 2024-09-08 Java教学:Integer、日期类、数字类、随机数、枚举,一次搞定!
- 2024-09-08 Java程序员面试宝典:用这100个问答搞定面试官
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)