第23 章 : 包的定义及使用
101 包的定义
包 == 目录
“.”表示分隔子目录
package com.name.demo;
public class Hello{}
编译后的.class文件需要保存到指定目录中
打包处理
$ javac -d . Hello.java
-d 表示要生成的目录,package定义的结构
. 表示当前所在目录
程序执行的时候一定要带着包执行程序
$ java com.name.demo.Hello
102 包的导入
直接编译,让java决定编译先后顺序
$ java -d . *.java
注意:
1、public class
类名必须与文件名保持一致
2、要被其他包所使用的类要加public
3、一般一个java文件只有一个class类
4、class
类名称可以与文件名不一致,可以提供多个类,会被编译为多个class文件
而且只能被本包所访问
包名必须采用小写字母定义
导入可以使用通配符 *
不表示全部加载,会根据需要加载
会出现引用不明确问题
使用的时候直接写完整路径
import com.name.demo;
com.name.demo.Hello();
导包示例
Message.java
package com.name.demo ;
public class Message{
public void printMessage(String message){
System.out.println(message);
}
}
Demo.java
import com.name.demo.Message ;
class Demo{
public static void main(String[] args) {
Message message = new Message();
message.printMessage("Hello Message") ;
}
}
打包执行
# 编译打包文件
$ javac -d . *.java
# 执行
$ java Demo
Hello Message
文件目录
├── Demo.class
├── Demo.java
├── Message.java
└── com
└── name
└── demo
└── Message.class
103 静态导入
JDK >=1.5
import static com.name.demo.Demo.* ;
Message.java
package com.name.demo ;
public class Message{
public static void echoMessage(String message){
System.out.println(message);
}
}
Demo.java
import static com.name.demo.Message.* ;
class Demo{
public static void main(String[] args) {
echoMessage("Hello Message") ;
}
}
104 生成jar文件
jar文件: 管理class文件
步骤:
打包编译 javac -d . Message.java
打包jar jar -cvf name.jar com
-c create 创建文件
-v verbose 详细输出
-f file 要生成的jar文件
rar打开jar文件
每个.jar文件都是独立的程序路径,必须通过CLASSPATH配置
windows: 以分号分隔
$ SET CLASSPATH=.;d:\name.jar
Mac:以冒号分隔
$ export CLASSPATH=".:/root/name.jar"
JDK < 1.9
所有类的jar文件: rt.jar tools.jar
JDK >= 1.9 模块化设计
105 系统常用包
Java自身提供类库
第三方提供支持类库
java.lang String, Number, Object JDK 1.1自动导入
java.lang.reflect 反射机制
java.util 工具类,数据结构
java.io 输入输出
网络开发
java.sql 数据库编程
java.applet 嵌套网页执行
java.awt 图形界面GUI开发Windows位置
java.swing(JDK1.2)轻量级图形开发包
106 访问控制权限
面向对象三个特点:封装,继承,多态
访问控制权限
访问范围 private default protected public
同包同类 true true true true
同包不同类 true true true
不同包的子类 true true
不同包的所有类 true
参考选择
属性定义 private
方法定义 public
通过子类访问protected 属性
Message.java
package com.util.a ;
public class Message{
protected String info = "message info";
}
TestMessage.java
package com.util.b ;
import com.util.a.Message ;
public class TestMessage extends Message{
public void showInfo(){
System.out.println();
}
}
Demo.java
import com.util.b.TestMessage ;
public class Demo{
public static void main(String[] args) {
new TestMessage().showInfo();
}
}
第24 章 : UML图形
107 类图
UML统一建模语言: 利用图形化的形式来实现程序类关系的描述
三层结构表示
类名称
属性
方法
抽象类属性斜体abstract
属性格式:访问权限 属性名称: 属性类型
public +
protected #
private -
方法格式:访问权限 方法名称(): 返回值
画图工具
Rational Role
PowerDesigner
子类实现接口 三角和虚线
子类继承父类 三角和实线
108 时序图
描述代码的执行流程
109 用例图
描述程序执行分配
一般出现在项目设计过程