包机制
包 称为 package,java当中引入package这种语法机制 主要是为了 方便程序的管理。
不同功能的类 分别放到不同的软件包 当中, 查找方便,管理比较方便,易维护。
定义包
在java源程序的第一行编写package语句。
package只能编写一个语句。
语法结构:
package 报名;
包命名规范:
公司域名倒序 + 项目名oa + 模块名 + 功能名
例如:
com.bjpowernode.oa.user.service;
org.apache.tomact.core;
包名要求全部小写,也属于标识符,必须遵守标识符的命名规则。
一个包将来对应的是一个目录。
目录之间使用 . 隔开。
使用了package机制之后,类名不再是test01,类名是package com.bjpowernode.javase.day11.Test
编译还是使用 javac java源文件的路径 (这样会在硬盘上 生成class文件, Test.class)
之后 手动创建目录,将Test.class 字节码文件 存放到 指定的目录下
运行 java com.bjpowernode.javase.day11.Test
另一种方式,编辑 + 运行。
编译: javac -d 编译之后存放路径 java源文件的路径
例如,将F:\Hello.java文件编译之后放到 C:\目录下
javac -d C:\ F:\Hello.java
javac -d . *.java
将当前路径中*.java文件编辑后,放到当前目录下
package com.bjpowernode.javase.day11;
public class Test {
public static void main(String[] args) {
System.out.println("Test01's main method execute!");
}
}
运行 JVM的类加载器ClassLoader默认从当前路径下加载。
保证DOS命令窗口的路径先切换到com所在的路径,执行: java com.bjpowernode.javase.day11.Test
通过import 包名的形式可以避免 输入全部名字
同一个包下的类不需要导入,不在同一个包下的类需要import导入。
特殊类
package com.bjpowernode.javase.day11;
import java.util.Date;
public class Test02 {
public static void main(String[] args){
//使用完整的包名创建
com.bjpowernode.javase.day11.Test t = new com.bjpowernode.javase.day11.Test();
System.out.println(t);
//可以省略报名,因为Test 和 Test02是同一个软件包中
Test tt = new Test();
System.out.println(tt);
//java lang.* 不需要手动引入,系统自动引入。
//lang: language语言包,是java语言的核心类,不要用手动引入。
String s = "abc";
System.out.println(s);
//直接编写一下代码编译错误,因为Date类没有找到,需要导入包
Date d = new Date();
}
}
访问控制权限修饰符
控制元素的访问方位
访问控制权限修饰符包括:
public 任何位置都可以访问
protect 同包,子类
缺省 同包
private 表示私有,只能在本类中访问
当某个数据只希望子类使用,使用protect修饰。
###修饰符范围
private < 缺省 < protectd < public
package com.bjpowernode.javase.day11;
public class User {
//保护的
protected int i = 10;
//缺省
int j = 20;
}
package com.bjpowernode.javase.day11;
public class Test {
public static void main(String[] args) {
User u = new User();
System.out.println(u.i);
System.out.println(u.j);
}
}
在同一个包下面,上述代码没问题。
只要出了包之后,pretected修饰的只可以在同包下进行访问。
类只能采用public和缺省的修饰符进行修饰,
内部类除外。