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

描述程序执行分配

一般出现在项目设计过程

相关文章
|
8月前
|
消息中间件 算法 安全
JUC并发—1.Java集合包底层源码剖析
本文主要对JDK中的集合包源码进行了剖析。
|
安全 Java API
JAVA并发编程JUC包之CAS原理
在JDK 1.5之后,Java API引入了`java.util.concurrent`包(简称JUC包),提供了多种并发工具类,如原子类`AtomicXX`、线程池`Executors`、信号量`Semaphore`、阻塞队列等。这些工具类简化了并发编程的复杂度。原子类`Atomic`尤其重要,它提供了线程安全的变量更新方法,支持整型、长整型、布尔型、数组及对象属性的原子修改。结合`volatile`关键字,可以实现多线程环境下共享变量的安全修改。
|
9月前
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
403 17
|
安全 Java 调度
解锁Java并发编程高阶技能:深入剖析无锁CAS机制、揭秘魔法类Unsafe、精通原子包Atomic,打造高效并发应用
【8月更文挑战第4天】在Java并发编程中,无锁编程以高性能和低延迟应对高并发挑战。核心在于无锁CAS(Compare-And-Swap)机制,它基于硬件支持,确保原子性更新;Unsafe类提供底层内存操作,实现CAS;原子包java.util.concurrent.atomic封装了CAS操作,简化并发编程。通过`AtomicInteger`示例,展现了线程安全的自增操作,突显了这些技术在构建高效并发程序中的关键作用。
214 1
|
Java Android开发
Eclipse 创建 Java 包
Eclipse 创建 Java 包
206 1
|
Java Apache Maven
Java/Spring项目的包开头为什么是com?
本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
980 0
Java/Spring项目的包开头为什么是com?
|
Java API 数据处理
Java 包(package)的作用详解
在 Java 中,包(package)用于组织和管理类与接口,具有多项关键作用:1)系统化组织代码,便于理解和维护;2)提供命名空间,避免类名冲突;3)支持访问控制,如 public、protected、默认和 private,增强封装性;4)提升代码可维护性,实现模块化开发;5)简化导入机制,使代码更简洁;6)促进模块化编程,提高代码重用率;7)管理第三方库,避免命名冲突;8)支持 API 设计,便于功能调用;9)配合自动化构建工具,优化项目管理;10)促进团队协作,明确模块归属。合理运用包能显著提升代码质量和开发效率。
1233 4
|
Java 数据安全/隐私保护
Java 包(package)的使用详解
Java中的包(`package`)用于组织类和接口,避免类名冲突并控制访问权限,提升代码的可维护性和可重用性。通过`package`关键字定义包,创建相应目录结构即可实现。包可通过`import`语句导入,支持导入具体类或整个包。Java提供多种访问权限修饰符(`public`、`protected`、`default`、`private`),以及丰富的标准库包(如`java.lang`、`java.util`等)。合理的包命名和使用对大型项目的开发至关重要。
983 2
|
Java
Java 基础语法-面试题(54-63道)(数组+类+包)
Java 基础语法-面试题(54-63道)(数组+类+包)
132 16
|
JavaScript Java API
Java日志通关(二) - Slf4j+Logback 整合及排包
作者日常在与其他同学合作时,经常发现不合理的日志配置以及五花八门的日志记录方式,后续作者打算在团队内做一次Java日志的分享,本文是整理出的系列文章第二篇。