包的定义
package是在使用多个类和接口的时候,为了避免名字重复而采用的一种措施,直接在程序中加入package关键字即可。
包的定义格式:
package 包名称.子包名称;
package org.lxh.demo08 ; // 定义一个包 class Demo{ public String getInfo(){ return "Hello World!!!" ; } }; public class PackageDemo01{ public static void main(String args[]){ System.out.println(new Demo().getInfo()); } };
定义包之后,实际上,类名称就是:包.类名称。
所谓的包实际上就是一个文件夹,一个*.class文件要保存在一个文件夹中。
包的导入
import语句:
当一个包的class文件需要使用另一个包的class文件,就需要使用导入指令。
Demo.java:
package org.lxh.demo08.a ; class Demo{ public String getContent(){ return "MLDN LXH" ; } };
ImportDemo.java;
package org.lxh.demo08.b ; // 放在不同的包中 import org.lxh.demo08.a.* ; // 导入不同包中的Demo类 public class ImportDemo01{ public static void main(String args[]){ System.out.println(new Demo().getInfo()) ; } };
编译的时候,应该先编译Demo.java类,之后再编译ImportDemo.java,因为后者使用了前者的类。
这时编译出现以下错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The type Demo is not visible
at org.lxh.demo08.b.ImportDemo01.main(ImportDemo01.java:7)
也就是Demo类不可见,因为Demo类的访问类型不是public,所以要修改Demo类为public类型。
package org.lxh.demo08.a; public class Demo { public String getInfo(){ return "Hello World!!!" ; } }
运行结果:
Hello World!!!
class与public class完整声明
一个类声明为public class 则文件名称必须与类名称一致,而且一个类中只能有一个public class,如果使用class声明一个类,则类名称可以与
文件名称不一致,但是执行的时候必须执行生成的class文件。
如果一个类只在本包访问,不需要被外包访问,则直接声明成class即可,而如果一个类需要被外包访问,则必须声明为public class。
假设要导入一个包中很多类,直接使用"*"。
系统常见包
JAVA新特性-静态导入
如果一个类中全部是用static声明的静态方法,则导入的时候就可以直接使用“import static”格式导入
导入格式如下:import static 包.类。*;
调用里面的方法,可以直接调用,如下:
package org.lxh.demo08.e ; public class Operate{ // 里面的方法全部都是static类型 public static int add(int i,int j) { // 加法操作 return i + j ; } public static int sub(int i,int j) { // 减法操作 return i - j ; } public static int mul(int i,int j) { // 乘法操作 return i * j ; } public static int div(int i,int j) { // 除法操作 return i / j ; } };
使用静态导入方式:import static 包。类。*;
package org.lxh.demo08.f ; import static org.lxh.demo08.e.Operate.* ; // 静态导入 public class StaticImportDemo{ public static void main(String args[]){ System.out.println("3 + 3 = " + add(3,3)) ; // 直接调用静态方法 System.out.println("3 - 2 = " + sub(3,2)) ; // 直接调用静态方法 System.out.println("3 * 3 = " + mul(3,3)) ; // 直接调用静态方法 System.out.println("3 / 3 = " + div(3,3)) ; // 直接调用静态方法 } };