JAVA 基础 包(package)

包(package)

package的作用

关键字package和import

当编写一个JAVA源码文件时,此文件通常被称为编译单元。每个编译单元都必须有一个后缀名.java。

而在编译单元中可以有一个public类,该类的名称必须和文件的名称相同。文件中允许有其他类,但是不能是public类。

当编译一个.java文件时,文件中的每个类都会有一个后缀为.class的输出文件,文件名和类名相同。

Java可运行程序是一组可以打包压缩为一个Java文档文件(JAR,使用Java的jar文档生成器)的.class文件。JAVA解释器负责这些文件的查找、装载和解释。

类库实际上是一组类文件。其中每个文件都有一个public类,以及任意数量的非public类。

因此每个文件都有一个构件(每一个都有它们自己独立的.java和.class文件)。如果希望这些构件从属于同一个群组,就可以使用关键字package。

如果使用package语句,必须是文件中除注释外的第一句代码。如下:

package access;

如果想要使用access包,则需要使用关键字import。如下:

import access.*;

以上内容摘自《Thinking in Java》。由以上描述可知,包的作用实际上和C++中的命名空间(namespace)十分相似。

要点

为了避免package名称的独一无二,一般的命名方法是:

(1)第一部分应该是类的创建者的反顺序的Internet域名。

(2)第二部分是把package名称分解为机器上的一个文件目录。

这样Java程序运行并加载.class文件时,就可以根据package名找到相应的路径。

eg:

package net.mindview.simple;

JAVA访问权限

JAVA中访问控制权限根据权限由大到小依次为:public > protected > 包访问权限(没有关键字) > private

注:以下为了便于说明各访问权限,不妨做一个形象的比喻。同一个包中的类可以视为朋友关系;有继承关系的类可以视为父子关系同一个类中的所有成员都视为自己

作用域 自己(当前类) 朋友(同一package) 子孙(继承关系) 其他package 
public 可访问 可访问 可访问 可访问
protected 可访问 可访问 可访问 不可访问
friendly 可访问 可访问 不可访问 不可访问
private 可访问 不可访问 不可访问 不可访问

包访问权限

JAVA默认的访问权限没有任何关键字,通常是指包访问权限(有时也表示为friendly)。

这意味着当前包中的所有其他类对包访问权限的成员都有访问权限。但是对于非本包的类,这个成员却是private

由于一个编译单元(即.java文件)只能隶属于一个包,所以同一个编译单元中的所有类彼此可以相互访问。

自己朋友类可以访问。

public访问权限

所有人均可以访问。

private访问权限

自己可以访问(除了包含该成员的类以外,任何其他类都无法访问)。

protected访问权限

自己朋友类子孙类可以访问。

时间: 2024-08-25 08:28:35

JAVA 基础 包(package)的相关文章

JAVA中包(package)的使用

暑假荒废了个把月,不过还是值得的,毕竟学会了游泳!好了,言归正传,由于JAVA中的文件是按类组织的,因此经常会用到包(package)的概念,下面举例子说明. JAVA是面向对象的语言,程序都是以类(class)为最小单位的,所有的程序都必须放在类定义里.JAVA源文件的后缀必须是 .java,通常JAVA程序源文件的主文件名可以是任意的,但如果JAVA程序源代码里定义了一个public类,则主文件名必须与该类相同,一般类名的首字母习惯大写.通常的习惯是每个源文件中只定义一个类,不同的类使用不同

[Lua基础]包package

包是一种组织代码的方式.很多语言专门提供了某种机制组织全局变量的命名,比如Modula的modules,Java和Perl的packages,C++的namespaces.每一种机制对在package中声明的元素的可见性以及其他一些细节的使用都有不同的规则.但是他们都提供了一种避免不同库中命名冲突的问题的机制.每一个程序库创建自己的命名空间,在这个命名空间中定义的名字和其他命名空间中定义的名字互不干涉. Lua并没有提供明确的机制来实现packages.然而,我们通过语言提供的基本的机制很容易实

java基础包学习目录

第一级别:精读源码 该级别包含的包如下: 第二级别:深刻理解 该级别包含的包如下: 看源码能解决你90%的问题.reflect代表了反射,net代表了网络IO,nio代表了非阻塞io,concurrent代表了并发. 这四个家伙可以说每一个都够面试官问上半天的,而且,这四个包的内容,如果你要深刻理解的话,其实还牵扯了很多其它的知识. 举个例子,反射你要了解清楚的话,你是不是要搞明白JVM的类加载机制?网络IO要搞清楚的话,你是不是要清楚TCP/IP和HTTP.HTTPS? 包括并发包,如果你要搞

Java基础——包(1)

使用了包使类多了一层范围,开发的时候必须使用包(让类更有结构). 不同包种类的访问: 当中犯的错误 1.demofu  f = new demofu();  编译时提示 :找不到符号. 原因:类名写错,有了包以后,类的名字应该是  包名.类名 2.编译时提示: 程序包不存在. 原因:包没有放在当前目录下,需要告诉JVM它的位置. 解决:set classpath 3.编译时提示:类在包中不是公共的,无法从外部程序包中对其进行. 解决:被使用的类和方法必须加public.

java基础--extension package guava(2) cache

 1.为什么使用缓存   缓存,在我们日常开发中是必不可少的一种解决性能问题的方法.简单的说,cache 就是为了提升系统性能而开辟的一块内存空间. 缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用.在日常开发的很多场合,由于受限于硬盘IO的性能或者我们自身业务系统的数据处理和获取可能非常费时,当我们发现我们的系统这个数据请求量很大的时候,频繁的IO和频繁的逻辑处理会导致硬盘和CPU资源的瓶颈出现.缓存的作用就是将这些来自不易的数据保存在内存中,当有其他线程或者客户端

JavaSE入门学习17:Java面向对象之package(包)

一Java包(package) 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包的作用: A把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. B如同文件夹一样,包也采用了树形目录的存储方式.同一个包中的类名字是不同的,不同的包中的类的名字是 可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别.因此,包可以避免名字冲突. C包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类. Java使用包(package)这种机制是为了防止命名冲突

Java中的包(package)

包的概念 Java中包(package)的概念和C++中命名空间(namespace)的概念很类似,都可以限制类的作用域.二者最大的差别在于,Java中的包隐式地指明了类的树形层级结构(同时也是Java源码文件的目录结构).这样做的好处在于:可以通过文件系统中对于文件路径唯一性的要求来限制类的唯一性. 代码组织 编写一个Java源代码文件(.java文件)时,此文件通常被称为编译单元.在编译单元内最多允许有一个public类,且该类的名称必须与文件名完全相同(包括大小写). 编译一个.java文

JDK源码简析--java.lang包中的基础类库

题记 JDK,Java Development Kit. 我们必须先认识到,JDK只是,仅仅是一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说,还是在一个层级上,它们都是需要被编译成字节码,在JRE中运行的,JDK编译后的结果就是jre/lib下得rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列所有文章基于的JDK版本都是1.7.16. 本节内容 在本节中,简析java.lang包所包

Java 包(package)

为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间. 包的作用 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2.如同文件夹一样,包也采用了树形目录的存储方式.同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别.因此,包可以避免名字冲突. 3.包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类. Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位