• JavaSE - 包(package)


    一、包

    简介

    包这个概念,在C++中是没有遇到过的。

    包 (package) 是组织类的一种方式. 使用包的主要目的是保证类的唯一性.

    也就是说,同一个包下面的.java文件不可以同名。我们知道的,一般来说一个.java文件只写一个类,当然再写一个非public的类也是可以的。但是一个包下面所有文件中都不可以存在同名的类。而包中的类都是有密切关系的,这点在后面的项目开发中会体会到。

    导入包中的类

    导入方式:使用关键字import进行导入包中的类。

    如定义一个Scanner对象需要导入JDK中编写好的库类。java.util是包的名称,Scanner是类名。      类似于C++中的include,但是比include要友好,合理,智能一点。

    ========================

    即使是在自己的IDEA中,一个项目下的两个不同包,A包要用到B包的某个类,也是需要import导入的。但是有一个问题是

     如图,更加说明了一个.java文件只建议写一个类,因为如果存在其他类,即不能定义为public的了。但是这又使得外部包中不可以访问此类。不过,当然你也可以在一个.java文件中写一些只在当前.java文件中使用的工具类。总而言之:import导入的类必须为public

    package关键字用于指定此.java文件中的类放在哪个包下面。 

    =======================

    有一种更快捷的导入包的方式:import java.util.*;   指导入java.util包下面的此文件中使用到的类,但不建议这样,因为可能会发生冲突。

    =====================

    注意事项: import 和 C++ 的 #include 差别很大. C++ 必须 #include 来引入其他文件内容, 但是 Java 不需要. import 只是为了写代码的时候更方便. import 更类似于 C++ 的 namespace 和 using(暂时还不太能理解

    静态导入

    使用 import static 可以导入包中的静态的方法和字段. 

     

    背景:Class2_1类中有static数据成员static_n 以及 static成员函数min。

    前两个println就说明了import static java.lang.Math.*; 的作用,即可以直接访问此Math类中的静态数据成员和方法。下面也同理,报错的原因是因为上方声明的静态导入的两个类中有同名的min方法。发生了歧义,所以报错。所以,静态导入并不推荐使用。 

    默认的包访问权限

    即,Java中的类的数据成员和方法可以不声明访问权限,则定为默认的包访问权限,即同一个包下的其他.java文件的类可以访问,无论继承不继承。而其他包的类不可以访问,无论继承不继承。(其实还是很好理解的)这是一种介于private和protected之间的访问权限。

    类似于private,因为不同的包不可以访问,即使不同包的类继承也不可以。但是又与private不同,方便于同一个包可以访问。

  • 相关阅读:
    类加载器与双亲委派机制
    实现IP地址归属地显示功能、号码归属地查询
    Linux 本地RStudio 工具安装&远程访问
    QQ音乐分享到微信接口
    解决问题遇到的问题
    RabbitMQ 集群 - 普通集群、镜像集群、仲裁队列
    数字图像处理 使用C#进行图像处理九 实现傅里叶变换
    利用cpolar为群晖NAS建立稳定外网地址(1)
    基于JAVA+SpringBoot+Vue+协同过滤算法+爬虫的前后端分离的租房系统
    ChatGPT Plus遇到订阅被拒原因与解决方案
  • 原文地址:https://blog.csdn.net/i777777777777777/article/details/125610190