采用分层结构
同一包中不能有两个同名的类
在缺省情况下,系统会为每一个源文件创建一个无名包
用户自定义包
package语句放在源文件的第一行。
创建包就是在指定目录路径下创建一个 子文件夹 ,这个包中类的字节码文件将存放在该文件夹下
package test;
public class Point {
……
}
对定义包程序的编译
方法1:创建一个test子目录,将源程序文件存放到该目录,编译时指明路径。
javac test/Point.java
或者,进入到子目录内,对源程序进行编译。
运行: java test.Point//指明类的包路径
方法2:采用带路径指示的编译命令:
格式:javac –d destpath Point.java
编译器将自动在destpath指定的目录下建一个test子目录,并将产生的字节码文件保存到该子目录下 。
典型用法是源程序放在当前目录下,用如下命令编译
javac –d . Point.java
编译后将在当前目录下自动创建test子目录
引用其它包的类的方法
(1) 在引用类时使用包名作前缀。
例 :new java.util.Date()
(2) 用import语句加载需要使用的类。
例:import java.util.Date;
然后在程序中可以直接通过类名创建对象
如:new Date();
(3) 用import语句加载整个包—-用“”号代替类名位置。
它将加载包中的所有的类。
例如:import java.util.;
【例5-6】编写一个代表圆的类,其中包含圆心(用Point表示)和半径两个属性,利用本章Point类提供的方法,求两个圆心间的距离,编写一个静态方法判断两个圆是否外切。用两个实际圆验证程序。
import test.Point;/*【注意】如果一个程序中同时存在package语句、import语句和类定义,则package语句为第一条语句,接下来是import语句,然后是类定义。*/public class Circle {Point center ;double r;public Circle(Point p,double r) {center = p; this.r = r;}public static boolean isCircumscribe(Circle c1,Circle c2) {return (Math.abs(c1.center.distance(c2.center)-c1.r-c2.r)<0.00001);}public String toString() {return "\"圆心是"+center+",半径="+r+"\"";}public static void main(String args[]) {Point a = new Point(10,10);Point b = new Point(30,20);Circle c1 = new Circle(a,10);Circle c2 = new Circle(b,5);if (isCircumscribe(c1,c2))System.out.println(c1+" 和"+c2+"的两圆相外切");elseSystem.out.println(c1+" 和"+c2+"的两圆不外切");}}
