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不同,方便于同一个包可以访问。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值