Java学习路线-8:包的定义及使用

简介: Java学习路线-8:包的定义及使用

第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;
coimport com.name.demo.Message ;
class Demo{
    public static void main(String[] args) {
        Message message = new Message();
        message.printMessage("Hello Message") ;
    }
}
m.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.net 网络开发

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(super.info);
    }
}

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 用例图

描述程序执行分配

一般出现在项目设计过程

相关文章
|
1月前
|
Java Docker 容器
|
2月前
|
Java 数据安全/隐私保护
JAVA包
JAVA包
13 0
|
5月前
|
存储 Java 编译器
Java编程中,包声明(Package Declaration)
Java编程中,包声明(Package Declaration)
88 1
|
15天前
|
Java 测试技术 数据安全/隐私保护
滚雪球学Java(23):包机制
【4月更文挑战第12天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
28 3
滚雪球学Java(23):包机制
|
1月前
|
Java Maven
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
38 3
|
3天前
|
Java
java面向对象——包+继承+多态(一)-2
java面向对象——包+继承+多态(一)
16 3
|
3天前
|
SQL Java 编译器
java面向对象——包+继承+多态(一)-1
java面向对象——包+继承+多态(一)
16 2
|
4月前
|
分布式计算 Java 大数据
IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
54 0
|
10天前
|
存储 Java
Java的`java.io`包包含多种输入输出类
Java的`java.io`包包含多种输入输出类。此示例展示如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着分配一个`byte`数组存储流中的数据。通过`read()`方法读取数据,然后将字节数组转换为字符串打印。最后关闭输入流释放资源。`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
20 1
|
10天前
|
Java
如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?
如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?
47 0