160 likes | 367 Views
面向对象程序设计. Object-oriented programming. Java 程序设计实践教程 第八章 包. 目标. 包 访问控制 使用 jar 文件. System. String. java. lang. io. 包( package ). 包的定义 为了便于管理大型软件系统中数目众多的类,解决类的 命名冲突 问题, Java 引入了 包 ( package )机制,提供类的 多重命名空间 。. 包( package ). 打包( package 语句)
E N D
面向对象程序设计 Object-oriented programming
Java程序设计实践教程 第八章 包
目标 • 包 • 访问控制 • 使用jar文件
System String java lang io 包(package) • 包的定义 • 为了便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,Java引入了包(package)机制,提供类的多重命名空间。
包(package) • 打包(package语句) • package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。 • 语法格式:package pkg1[.pkg2[.pkg3…]]; • Java编译器把包对应于文件系统的目录层次结构,package语句中,用“·”来指明包(目录)的层次。 • 例如使用语句package cn.lntu;则该文件编译产生的类应位于..\cn\lntu目录下。
包(package) • 打包(package语句) • 解释运行类时,格式必须为java 包名.类名 • 在当前目录下生成包 • javac -d . Test.java • 在指定目录下生成包 • javac -d E:\JavaLesson Test.java • 例:Test.java
包(package) • 打包(package语句) • 虚拟机在装载带有包名的类时,会先找到classpath环境变量指定的目录,再按照与包名层次相对应的目录结构去查找.class文件。 • classpath设置一定是指向顶层包所对应目录的父目录。 • 注意:不要以为把一个类放在某个目录下,这个目录名就成了这个类的包名。 • 包名必须在程序中通过package语句指定。
包(package) • 导入包(import语句) • 如果使用一个包中的类时,必须使用该类的全名(例如:cn.lntu),Java编译器才会找到该类。 • 也可以使用import在文件的开头引入使用到的类。 • 例如:import java.io.File; • import语句引入整个包中类。 • 例如:import java.io.*; • 在同一包中的类可以互相引用,无需import语句。 • 为了在任何地方都可以用到导入包中的类文件,应将该目录加到环境变量classpath中。 例:Test2.java
包(package) • 导入包(import语句) • 注意: • 如果父包中的类调用子包中的类,必须引用子包的全名,而不能省略父包名部分。 • import了一个包中所有的类,并不会import这个包中的子包中的类,如果程序中用到了子包的类,需要再次对子包作单独引入。 • import java.awt.*; import java.awt.event.*;
包(package) • JDK中常用的包 • java.lang----包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。自动导入,不需要使用import导入。 • java.util----包含一些工具类,如定义系统特性、使用与日期日历相关的函数。 • java.awt----包含构成抽象窗口的工具集(abstract window toolkit)的多个类,用来构建和管理应用程序的图形用户界面(GUI)。 • java.applet----包含applet运行需要的一些类。
包(package) • JDK中常用的包 • java.text----包含Format、DateFormat、SimpleDateFormat等,提供各种文本或日期格式。 • java.net----包含执行与网络相关的操作的类。 • java.io----包含提供多种输入/输出功能及文件操作的类。 • java.sql----提供数据库应用功能的类库。 • javax.swing----扩充和增强图形用户界面功能。
包(package) • Java.lang.NoClassDefFoundError: • 文件名错误 • 没有import类所在的包名 • classpath设置错误
访问控制 • 类成员的访问控制 • private访问控制: • private修饰的成员只能在这个类的内部使用。 • 注意:不能在方法体内声明的变量前加private。 • 默认访问控制: • 成员方法或成员变量名前没有使用任何访问控制符,那么这个成员是默认的(default)。可以被这个包中的其他类访问,但不能被不同包中的子类访问。
访问控制 • 类成员的访问控制 • protected访问控制: • 既可以被同一个包中的其他类访问,也可以被不同包中的子类访问。 • public访问控制: • 可以被所有的类访问。
访问控制 • 类的访问控制 • public访问控制: • public修饰的类能被所有的类访问。 • 默认访问控制: • 默认修饰的类只能被同一包中的其他类访问。
使用jar文件 • jar文件包 • jar文件是一种压缩文件,与ZIP压缩文件格式兼容。 • 可以把多个类文件压缩成jar包提供给别人使用。 • Java虚拟机会自动在内存中解压jar文件,把这个jar文件当成一个目录,在这个jar文件中去寻找所需要的类及包名所对应的目录结构。 • 生成jar文件,一方面可以方便我们管理大量文件,另一方面,进行压缩可以减少文件所占的空间。 • C:\myjava>jar cvf test.jar xx