本章目标
了解多人开发的问题
掌握包的作用及定义
掌握包的导入语法及导入限制
了解系统常用包
掌握Java新特性 —— 静态导入
掌握jar命令的使用
多人开发
在Java中,可以将一个大型项目中的类分别独立出来,分门别类地存到文件里,再将这些文件一起编译执行,如此的程序代码将更易于维护
多人开发的问题
如果有多个开发人员共同开发同一个项目的时候,则肯定会出现类名称相同的情况。那么这样一来就会比较麻烦
包的定义
package是在使用多个类或接口时,为了避免名称重复而采用的一种措施,直接在程序中加入package关键字即可。
包的定义格式:
——package 包名称.子包名称 ;
为程序打包
package org.demo;//定义一个包 class Demo{//定义 Demo 类 public String getInfo(){//返回信息 return "Hello World!!!"; } } public class PackageDemo01 { public static void main(String[] args){ System.out.println(new Demo().getInfo());//实例化本包对象 } /* 结果: * Hello World!!! * */ }
import语句
之前所讲解的程序,两个类是存放在同一个包中的,因此代码与之前没有什么根本的不同,但是如果几个类存放在不同的包中,则在使用类的时候就必须通过import语句导入。
语法:
——import 包名称.子包名称.类名称 ; —> 手工导入所需要的类
——import 包名称.子包名称.* ; —> 由JVM自动加载所需要的类
关于“public class”与“class”声明类的完整补充
在本书的一开始,曾经为读者讲解过,如果一个类声明为public class则文件名称必须与类名称一致,而且在一个类中只能有一个public class,而如果使用class声明一个类,则文件名称可以与类名称不一致,但是执行的时候必须执行生成的class文件名称。除了这些之外,public class和class还在包的访问上有所限制,如果一个类只在本包中访问,不需要被外包访问,则直接声明成class即可,而如果一个类需要被外包访问,则必须声明为public class。
定义 org.demo.a.Demo 类
package org.demo.a; public class Demo{ public String getInfo(){ return "Hello World!!!"; } }
在另外一个类中引用Demo类
package org.demo.b; import org.demo.a.*;//导入不同包中的 Demo 类 public class PackageDemo01 { public static void main(String[] args){ System.out.println(new Demo().getInfo()); } /* 结果: * Hello World!!! * */ }
定义另一个 Demo 类
package org.demo.c; public class Demo{ public String getInfo(){ return "Hello World!!!"; } }
同时导入不同包的相同类
package org.demo.b; import org.demo.a.*;//包中存在 Demo 类 import org.demo.c.*;//包中存在 Demo 类 public class PackageDemo02 { public static void main(String[] args){ System.out.println(new Demo().getInfo()); } /* 结果: * HException in thread "main" java.lang.Error: Unresolved compilation problem: * The type Demo is ambiguous * * at org.demo.b.PackageDemo02.main(PackageDemo02.java:6) * */ }
package org.demo.b; import org.demo.a.*;//包中存在 Demo 类 import org.demo.c.*;//包中存在 Demo 类 public class PackageDemo03 { public static void main(String[] args){ org.demo.a.Demo d= new org.demo.a.Demo(); System.out.println(d.getInfo()); } /* 结果: * Hello World!!! * */ }
系统常见包
JAVA新特性 —— 静态导入
在JDK 1.5之后提供了静态导入功能,那么什么叫静态导入呢?如果一个类中的方法全部是使用static声明的静态方法,则在导入的时候就可以直接使用“import static”的方式导入,导入的格式如下:
——import static 包.类.* ;
package org.demo.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; } }
package org.demo.f; import static org.demo.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));//直接调用静态方法 } /* 结果: * 3 + 3 = 6 * 3 - 2 = 1 * 3 * 3 = 9 * 3 / 3 = 1 * */ }
jar命令的使用
当开发者为客户开发出了一套JAVA类之后,肯定要把这些类交给用户使用,但是如果所有的类是直接通过*.class的格式给用户,则会比较麻烦,所以一般情况下会将这些*.class文件压缩成一个文件交付给客户使用,那么这样的文件就称为jar文件(Java Archive File),如果要想生成jar文件,直接使用JDK中bin目录里的jar.exe就可以将所有的类文件进行压缩。
相关推荐
Junit-4-4,fastjson-1.2.72,,Gson-2.8.5JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。...
包的使用 ...3.首次导入包发生的事情 首次导入包: 先产生一个执行文件的名称空间 1.创建包下面的__init__.py文件的名称空间 2.执行包下面的__init__.py文件中的代码 将产生的名字放入包下面的
Kotlin 1.3 基础课程第二章 基础语法包的定义与导入
注意:'axios'内置包也是可以被导入在main.js文件中配置全局变量,但是如果想要在js文件或vue文件中正常调用并执行'axios'内置包,依赖需要在js文件或vue文件中定义'axios'内置包的导入,即在vue3中'axios'内置包的...
1. 单行导入与多行导入 在 Go 语言中,一个包可包含多个 .go 文件(这些文件必须得在同一级文件夹中),只要这些 .go ...我们导入了两个具有同一包名的包时产生冲突,此时这里为其中一个包定义别名 import ( "crypt
这些函数允许您将包含函数定义的 SBML 文件导入 SimBiology。 有两种方法可用: - sbmlimportFunExternal 此函数将每个函数定义作为单独的 MATLAB 函数保存在当前目录中。 生成的 SimBiology 模型支持“模型加速”...
一款好用的zookeeper配置内容导入导出工具,适用平台是windows,但是也可以修改run.bat为shell脚本,适合linux。 带图形界面,修改config中的config.xml,添加需要管理的zookeeper地址信息,同时可以定义两个用户...
com.adobe.serialization.json.JSON; flex使用json报错,没有定义的类型,导入包即可. 资源是rar文件, 里面有源码+示例 和一个as3corelib.swc文件
首先,将C++下的代码编译为动态库,并将生成的动态库命名为封装模块的名字,如:用BOOST_PYTHON_MODULE(Module_Name)宏对需要导出的函数、全局变量、类等导入Python的Module_Name模块,此时生成的动态库需要更名为...
博客配套文件及代码.Python关于import的实验.分享给广大Python学习者和爱好者,欢迎大家交流指正,相互学习.
使用esbuild在导入时编译和打包JSON模式定义 安装 该软件包以@offen/esbuild-plugin-jsonschema形式发布到npm: npm install @offen/esbuild-plugin-jsonschema -D 用法 在默认配置中,转换将应用到所有扩展名为....
只实现了简单的excel导入导出,不支持特殊模版的定义。 里面包含的知识点(适合初学者学习的demo): 1、poi-excel 基本操作(工具) 2、自定义注解的使用 3、全局异常捕获的定义 4、jkd1.8新特性:Lambda 表达式 、...
上下文包为在较大的项目中构造R文件提供了一种简单的工具,如上面的定义中所述,可能需要更仔细地管理依赖项。 默认情况下,唯一包含其名称的软件包是“ base”,而其他所有软件包都必须明确指定。 这反映了其他...
概述-创建包 在本作业中,您将使用TDD方法创建用于计算各种数学序列的几个模块。 然后,将模块分组为具有顶级包名称numseq的分层包结构。... Python需要用于包定义的特定结构。 目录名称是在导入语句
json解析包,使用json时需要导入的包,用来定义json转换协议
准备步骤, 导入jquery jar包及提供的资源jar包,jquery.ocupload-1.1.2.js 使用步骤1. 定义一个input标签 <input type="button" id="upload_file" value="上传文件"/> 使用步骤2.添加如下代码 ,写在script的...
Java编程思想中工具jar包,在练习java编程思想的书时,可以导入这个jar包。
解决在tsconfig定义的TypeScript导入别名和路径。 安装 npm install --save-dev gulp-ts-alias 信息 以前曾尝试发布完成类似功能的Gulp插件,但都无法维护。 出于遗产的考虑,以下是已考虑的先前软件包/脚本的...
用法: 打开 MTEX 并启动: 导入 EBSD 数据 根据您的样品和仪器的约定导入带有 EBSD 数据集 x 和 y 轴的 .ctf 文件 在工作区中导入变量“ebsd” EBSD数据可以过滤,非索引区域可以去除 clean4fem 函数识别颗粒...