包
1. 包的定义与使用
- 写主类之前先定义包 在源文件首行package 包名称
为避免源文件重名产生包,包就是文件夹。
2.包名称规范:
公司域名反转、个人主页地址反转
- 不能使用别人的包名
打包编译命令:
javac -d .Test.java;
-d:根据package定义的包名称创建生成目录
. :在当前目录下生成
4.类定义了包名 +类名:全限定名
执行需要使用全名称:包名.类名
java www.bit.java.Test
5.包名是独立的,没有包含关系
2. 导入包
import 包名
package www.bit.java.test;
import www.bit.java.util.Message;//导入程序类
public class Test{
public static void main(String[] args){
Message msa = new Message();
msg.print();
}
}
Test类中引用了Message类,首先编译Message类,然后编译Test类
package www.bit.java.util;
public class Message{
public static void main(String[] args){
Syatem.out.println("[Message] hello java");
}
}
上述情况复杂 这时使用打包表编译命令
自动打包编译命令(将当前路径下的所有源文件按照主类的使用情况自动编译)
javac -d . ./*.java
3.类使用class和public class的区别:
1.public class: 文件名成必须与类名称保持一致,如果希望一个类被其他包访问,则必须定义为public class
2.class:文件名称可以与类名称不一致,在一个*.java中可以定义多个class ,但是这个类不允许被其他包所访问。
3.1.导入多个包
import www,bit.java.util.*;
3.2 不同包相同类名导入
不同包同名类如果被同时使用在使用类的时候采用全限定名(不需要导入)
www.bit.java.message.Message msg = new www.bit.java.messag.Messag();
4.系统常用包
1.java.lang:系统常用基础类(String、Object),该包JDK1.1后自动导入
2.java.lang.reflect:java 反射编程包
3.java.net:进行网络编程开发包
4.java.sql:仅从数据库开发的支持包。
5.java.util:是java提供的工具程序包。(集合类);
6.java.io:IO 编程开发包。
7.java.awt (离不开Windows 平台)、java.swing: UI开发包 。
5.访问控制权限
private >default(不写默认)>protected>public
package father;//父类包
public class Father {
//定义protected权限
protected String msg="www.bit.java";
}
package child;//子类包
import father.Father;
public class Child extends Father {
public void print(){
System.out.println(super.msg);//父类中的protected权限
}
}
package test;//测试包
import child.Child;
public class TestProtected {
public static void main(String[] args) {
Child child = new Child();
child.print();//只有子类可以访问protected权限
}
}
在不同的包中,只有子类能访问父类中的protected权限。
关于权限的选择:
1.对于封装的描述90%使用private权限,10%会使用protected权限;
2.属性都使用private权限,方法都是用public权限。