当前位置:首页 > 第八章 - 接口
Java程序设计入门与精通
包中。如果没有package语句,类的名字被放进一个默认的包中,该包没有名字。由于类和类成员的可访问性含有包的控制因素在内,所以建议大家尽量使用包。
Java平台中的类与接口都是根据功能以包组织的。Java的JDK提供的包主要有: java.lang 语言包 java.util 实用包 java.awt 抽象窗口工具包
java.text 文本包
java.io 输入输出流的文件包 java.applet applet应用程序 java.net 网络功能
每个包中都定义了许多功能相关的类和接口。我们也可以定义自己的包来实现自己的应用程序。
Java编译器把包对应于文件系统的目录和文件管理,还可以使用ZIP或JAR压缩文件的形式保存。例如,以Windows平台为例,名为java.applet的包中,所有类文件都存储在目录classPath\\java\\applet下。其中包根目录——classPath由环境变量CLASSPATH来设定。
8.3.2 包的定义与使用
1.包的定义
使用package语句指定一个源文件中的类属于一个特定的包。Package语句的格式如下: package pkgl[.pkg2[.pkg3…]];
下面以具体例子来介绍包的定义和引用。 package PackageTest; public class Hello {
String hello1; String hello2; public Hello() { hello1=\ hello2=\ }
public void printHello() { System.out.print(hello1); System.out.println(hello2); } }
136
第八章 接口
这样就创建了一个PackageTest包,其中包含一个Hello类。Hello类成为PackageTest包中的一个public成员,并存放在classPath\\PackageTest目录中。如果源文件中没有package语句,则指定为无名包。无名包没有路径,一般情况下,会把源文件中的类存储在当前目录(即存放Java源文件的目录)下。前面许多例子都属于这种情况。 说明:
? package语句在每个Java源程序中只能有一条,一个类只能属于一个包。 ? package语句必须在程序的第1行,该行前可有空格及注释行。 ? 包名以“.”为分隔符。 2.包的使用
在Java中引入包(例如JDK中的包或用户自定义的包)中的类是通过import语句实现的。Import语句的格式如下:
import pkgl[.pkg2[,.pkg3.…]].(classname|*);
其中pkg l[.pkg2[.pkg3…]]表明包的层次,与package语句相同,它对应于文件目录,classname则是要引入的类名。如果要从一个包中引入多个类,则可以用通配符(*)来代替。例如下列代码引入util包中的Date类:
import java.util.Date; //引入util包中的Date类 Date date1=new Date(); //直接使用Date类 下例引入util包中的所有类,程序中便可以直接引用该包中的任意类:
import java.util.*; //引入graphics包中的所有类 Vector v = new Vector(); //直接使用Vector类 Date date1=new Date();; //直接使用Date类
注意:import语句必须在源程序任何类声明之前,在package语句之后。因此
Java程序的一般结构如下:
[package 语句] //默认是package.; (属于当前目录) [import语句] //默认是import java.lang.*; [类声明]
3.包定义与使用示例
【例8-3】定义二维几何图形的包并使用。
⑴文件Rectangle.java,定义了Rectangle类放入MyPackageTwoD包中。
package MyPackageTwoD; public class Rectangle {
public int width=0; public int height=0; public Point origin;
public Rectangle(Point p,int w,int h)
137
Java程序设计入门与精通
{ origin=p; width=w; height=h; }
public void move(int x,int y) { origin.x=x; origin.y=y; }
public int area() { return width*height; } }
⑵文件Point.java,定义了Point类放入MyPackageTwoD包中 package MyPackageTwoD; public class Point {
public int x=0; public int y=0;
public Point(int x,int y) { this.x=x; this.y=y; } }
⑶文件TestPackage.java,包含main()方法的测试程序。定义了一个点及一个矩形,计算并输出矩形的面积。
import MyPackageTwoD.*; //引用MyPackageTwoD中的所有类 public class TestPackage { public static void main(String ars[]) { Point p=new Point(1,2); Rectangle r1=new Rectangle(p,10,10); System.out.println(\ }
138
第八章 接口
}
程序运行结果如图8-3所示:
图8-3 程序运行结果
8.3.3 设臵包的路径
对于用户自定义的包如上例中的MyPackageTwoD,系统如何知道这个包在哪儿?其他类如何引用它?
总结出的操作步骤如下:
1. 在某一路径下如D:\\myjava中创建一个与包同名的文件夹
D:\\myjava\\MyPackageTwoD。注意:包名与文件名的大小写应该一致。 2. 再添加环境变量classpath的路径如下:
Set classpath=.;c:\\jdk1.4.2\\lib;D:\\myjava
3.将源程序Rectangle.java和Point.java编译后生成的Rectangle.class和
Point.class文件拷入D:\\myjava\\MyPackageTwoD文件夹中。
4. 进入文件TestPackage.java所在的路径如c:\\TestPack,该文件导入了
MyPackageTwoD包,编译运行TestPackage.java,系统将在D:\\myjava中寻找MyPackageTwoD包。
8.4 内部类
8.4.1 什么是内部类
内部类是在一个类的声明里声明的类,也称为嵌套类。嵌套类的形式如下所示: class A { … class B { …
} … }
139
共分享92篇相关文档