一、包
1、包方便进行管理,包还可方便命名。
2、语法:
package 包名1.包名2....包名n;
package cn.edu;
注意:包的语法一定要写在整个源文件的第一行;后面写上类,代表这个类属于这个包。
package cn.edu;
class Student{
private int age;
public long stuID;
String name;
}
3、如果使用了包,编译命令应改为:
1)javac -d 目标文件夹 文件名.java
目标文件夹就是希望class生成的文件夹。
示例:
javac -d . student.java
其中:.代表当前文件夹
2)如果使用了包,类的名字应为:包名+类名
例:上例中,类的名字应为cn.edu.Studetnt
3)编译后,会生成包名相应的文件夹。比如上例:会在当前文件夹下自动生成cn文件夹,然后在cn文件夹下生成edu文件夹,再在edu文件夹下生成Student.class。
4、运行程序
如果使用了包,运行程序的语法应改成:
java 包名.类名
5、约定:包名命名时,以域名的反序做为包名。
比如说江西农业大学软件学院的域为: ruanjianxy.jxau.edu.cn
我们命名包名为: cn.edu.jxau.ruanjianxy
package cn.edu.jxau.ruanjianxy;
class Student{
private int age;
public long stuID;
String name;
public static void main(String[] a){
System.out.println("ni hao");
}
}
6、可以将class文件生成到任何文件夹下。
如何在任何文件夹运行到我们class文件?
配classpath环境变量。
二、classpath环境变量
classpath环境变量是为程序找到所需的类提供路径。
步骤:
右击“我的电脑”,在菜单中选择“属性”,弹出“系统属性”对话框,选择“高级”标签,点击“环境变量”按钮,弹出“环境变量”对话框,在系统变量中点击“新建”按钮(一般没有classpath环境变量,如有则点击编辑即可),弹出“新建系统变量”对话框,在变量名中输入“classpath”,在变量值中输入“.;需要配置的路径”。多个路径以分号分隔开。最后点击确定完成。
提示:配完环境变量后要重启命令提示符。
三、包的访问
1、类有两种权限:一种是public;一种默认权限(没有写public)
2、一个类需要访问另外一个包内的类,需将这个类导入;并且这个被访问的类的权限应为public。
语法:
import 包名.类名;
如果需要导入包内多个类,可以使用import 包名.*;
package cn.edu.jxau.ruanjianxy;
public class Student {
public long stuID;
private int age;
String name;
}
//测试类
import cn.edu.jxau.ruanjianxy.Student;
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student s = new Student();
}
}
如果一个包内的类需要被外部访问,权限必须是public。
package cn.edu.jxau.ruanjianxy;
class Student {
public long stuID;
private int age;
String name;
}
//测试类
import cn.edu.jxau.ruanjianxy.Student;//错误,因为student的权限不是public.
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student s = new Student();//错误。
}
}
3、成员的权限:public、private、默认的(没有写权限)
默认权限可称为包内权限。也就是只有在同一个包能够进行访问。
private权限:只能在同一个类能够访问;
默认权限:只能在同一个包内能够访问;
public:是所有的类都能访问。
如果要访问一个类中的成员,首先要保证能够访问到这个类,然后再看成员的权限是否允许访问。
package cn.edu.jxau.ruanjianxy;
public class Student {
public long stuID;//公有权限
private int age;//私有权限
String name;//默认权限
}
//测试类
import cn.edu.jxau.ruanjianxy.Student;
public class Test1 {
public static void main(String[] args) {
Student s = new Student();
s.stuID = 20135647;
// s.name = "gsdfg";//错误,因name是默认权限,只有在同一个包中才能访问。
}
}
总结:在包外要访问到包内的成员,必须保证类是public,并且保证成员不是private和默认的权限。