包的使用及其创建

简介: 包的使用及其创建

前言

       java语言中,包在整个管理过程中发挥了重要的作用。使用包,可以有效地管理繁多的类文件,解决了类名重复的问题。在类中应用包和权限修饰符,可以控制他人对类成员的方法的访问。

类名冲突

      问题:重复创建相同的类,会导致调用类时,无法区分哪一个类

       解决方法:将两个同名、但不同方法的放置于不同的中。避免调用类时,无法判断调用哪一个类。

       举例:

               java API 文档中

                       java sql 包 中有 Date类

                       java util 包 中有 Date类

                               两个Date类,同名,不同方法

               调用Date类时,通过用不同的包来确定调用的是哪一个Date类

       注:自己创建了与API相同类名的类,会覆盖API的类。通过修改类名,解决 此类名冲突 的问题

               

public class Demo{
  public static void main(String[] args){
  String a = “123”;    //报错!!!
    }
}
class String{
    // 覆写了 API 中String类,API的String被覆盖
}

   此代码中,main方法中的String 数据类型 无法使用,报错。String类被覆写。

       解决方法:将代码中的 String类修改为  MyString (不论什么名,不和java API重名就行)

完整的类路径

       完整类名:包名.类名

                  eg: java.lang.String        包名:java.lang        类名:String

调用java API 中的类

               第一种方法:

                       1. import 关键字 导入对应 java API 中的类

                       2. new 关键字 实例化对象,调用其方法

import java.util.Date;
//导入指定的Date包,完整的类路径
public Class Demo{
    public static void main(String[] args){
        Date date = new Date();
        //实例化Date对象,调用其类中的方法
    }
}

   第二种方法:

                       直接用 java API 中的完整类名 new 关键字实例化 实现调用

                      使用场景:

                               通过第一种方法,同时导入 util 包中的 Date类  和   sql 包中的 Date 类,会报错系统无法判断Date实例化后,实现哪一个功能

                       解决方法: 通过  直接用java API中的完整类名 实例化 实现调用

public class Demo{
    public static void main(String[] args){
        java.util.Date date1 = new java.util.Date();
    java.sql.Date date2 = new java.sql.Date();
        // 通过 使用 完整类名 new 关键字 实例化对象,实现了调用 sql包 和 util包 中的两个Date类
    }
}

创建包

        创建包的名称规范:

               想表达为: com.java              包的命名为:java.com

       

        如何调用其他包和本包中多个同名类中的方法?

       情景:本包中有Action , Demo 类    package5包中也有Action类

                 在Demo类main方法中

                 实例化 Action

                 实例化 完整类路径 package5.Action

                 可实现在Demo类中,同时调用本包中Action类和 com.mingri包中Action 类的方法

     

       package5包中的Action类

package package5;
public class Action {
  public void action() {
  System.out.println("这里是 package5 包中的 action方法");
  }
}

  本包中的Action类

public class Action {
  public void action() {
    System.out.println("这里是 本包 中的 action方法");
  }
}

本包中的Demo类

public class Demo {
  public static void main(String[] args) {
    Action a1 = new Action();
    a1.action();
        //调用本包中的 Action()方法
    package5.Action a2 = new package5.Action();
    a2.action();
        //调用 package5 包中的 Action()方法
  }
}

  输出结果:

         以上为调用其他包和本包中多个同名类中的方法 的 实操展示

导入类包包中的类

import java.lang.Math

          包的名称: java.lang

                      类的名称: Math

 

        import 关键字导入静态属性

               使用方法:import static  静态属性

  没有导入静态属性

public class Demo{
  public static void main(String[] args){
  System.out.println();
    }
}

导入静态属性

import static java.lang.System.out; //Demo中的静态成员 out
public class Demo{
  public static void main(String[] args){
    out.println();  //和System.out.println(); 效果一样
    }
}
import java.util.*;

       注:导包中的 * 表示调取 java API 中 util 包里的所有类,避免了重复使用 import 关键字导入的繁琐

eclipse快捷键:shift+ctrl+o  自动补全所有代码中需要导入的包

总结

       以上就是”包的使用“的简单介绍。如果文章中有几处错误,或者未补充到的东西,欢迎在评论区中讨论,我会即使进行反馈的。

相关文章
|
JavaScript 定位技术 API
uniapp腾讯地图路线规划
uniapp腾讯地图路线规划
965 0
|
Python
用 Python 读取照片的 Exif 信息(顺便说说本人的一些想法)
用 Python 读取照片的 Exif 信息(顺便说说本人的一些想法)
436 2
|
11月前
|
Kubernetes 应用服务中间件 nginx
【赵渝强老师】K8s中Pod探针的HTTPGetAction
在K8s集群中,kubelet通过探针(如livenessProbe、readinessProbe和startupProbe)检查容器健康状态。HTTPGetAction通过HTTP请求检查容器健康,返回状态码在200-400区间视为成功。示例中创建了基于Nginx镜像的Pod,并配置存活探针,每5秒检测一次。通过命令操作验证探针功能,展示了Pod的健康检查机制。 视频讲解:[Bilibili](https://www.bilibili.com/video/BV1DTtueTEMM)
199 15
【赵渝强老师】K8s中Pod探针的HTTPGetAction
|
弹性计算 API 云计算
使用LobeChat轻松打造私人智能聊天助手
阿里云计算巢提供了一键部署LobeChat的功能,无需下载代码或安装复杂依赖,通过简单几步即可搭建私人聊天助手,非常适合非技术人员。LobeChat是一款现代化设计的开源聊天应用,支持语音合成及多模态插件系统。部署前需确保已开通阿里云账号且余额充足。
使用LobeChat轻松打造私人智能聊天助手
|
存储 缓存 NoSQL
Redis 大 Key 对持久化的影响及解决方案
Redis 大 Key 对持久化的影响及解决方案
212 1
|
消息中间件 API 调度
TAG:BladeLLM 的纯异步推理架构
近期,大模型推理社区(vLLM,SGLang 等)普遍开始关注框架运行时开销,提出了多步调度、异步输出处理、独立 API Server 进程等工作,来分摊或掩盖部分开销。 在我们的实际业务场景中,也观察到高额的框架开销严重限制了系统吞吐,特别是在高并发(>1k)场景下,运行时开销已经接近或高于 GPU 运行时间,导致资源严重浪费和性能下降。为此,BladeLLM 设计并实现了基于 Python 的纯异步 LLM 推理架构 -- TAG (Totally Asynchronous Generator) ,以最大程度提高 GPU 利用率,提升引擎性能。
|
缓存 数据库
缓存穿透和击穿
【8月更文挑战第16天】
467 0
缓存穿透和击穿
|
存储
【VBA代码解决方案】md文档转Word后,全自动转换为标准的Word公式格式
【VBA代码解决方案】md文档转Word后,全自动转换为标准的Word公式格式
572 0
|
搜索推荐 网络架构 开发者
Next.js静态出口生成策略深度解析
【7月更文挑战第18天】Next.js凭借其强大的静态生成、静态出口生成以及服务器端渲染功能,为开发者提供了构建高性能、高SEO友好Web应用的强大工具。
|
监控 数据库 Docker
Zabbix监控神通数据库教程
**摘要:** 本文介绍了如何使用Docker安装和配置神舟通用数据库,并利用Zabbix进行监控。首先,通过Docker安装数据库镜像,启动容器并映射端口。接着,使用默认凭证连接数据库并验证安装。然后,将数据库的Python模块和库文件复制到主机,并安装Python3.5及相应模块,创建外部检查脚本以实现Zabbix的监控功能。示例展示了查询数据库版本的监控指标配置。最后,提到了监控结果的界面展示,并邀请读者探索更多Zabbix监控技巧。
425 0
Zabbix监控神通数据库教程