• 为了更好地组织类,Java 提供了包(package)机制
  • 这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口(interface)、枚举(enumerations)和注释(annotation)等

一、作用

  1. 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
  2. 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
  3. 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

二、创建包

  • 一个包(package)可以定义为一组相互联系的类型(类、接口、枚举和注释),为这些类型提供访问保护和命名空间管理的功能。
  • 开发者可以自己把一组类和接口等打包,并定义自己的包。
  • 创建包的时候,你需要为这个包取一个合适的名字。
  • 而在包中的源文件(Java文件),必须要对其所在的包进行包声明

包声明语法:package pkg1[.pkg2[.pkg3...]];

注意:

  1. 一般利用公司域名倒置 作为包名开头。
  2. 创建包之后,如果其他的一个源文件 包含了这个包提供的类、接口、枚举或者注释类型的时候,都必须将这个包所提供的内容的引入声明 放在这个源文件的开头
  3. 包声明应该在源文件的第一行,每个源文件只能有一个包声明,这个文件中的每个类型都应用于它。
  4. 如果一个源文件中没有使用包声明,那么其中的类,函数,枚举,注释等将被放在一个无名的包(unnamed package)中。
  5. 将类、接口等类型的源文件放在一个目录中,这个目录要对应类所在的包名,而包名会成为类名的一部分。而编译之后的 .class 文件应该和 .java 源文件一样,它们放置的目录应该跟包的名字对应起来。

示例:

package com.cnblogs.www.conyoo;

public class Blog{}

三、导入包

  • 为了能够使用某一个包的成员,我们需要在 Java 程序中明确导入该包。使用 'import'语句可完成此功能。

导包语法:import pkg1[.pkg2…].(classname|*);

注意:

  1. 在 java 源文件中'import'语句应位于 'package'语句之后,所有类的定义之前,可以没有,也可以有多条。
  2. 如果在一个包中,一个java 源文件中想要使用本包中的另一个类,那么该包名可以省略。
  3. 在 java 源文件中要是要用到其他包下的类,就必须要先导包,或使用类全名描述这个类
  4. 用'import'关键字导包时,结尾使用通配符 '*' , 会导入包下的所有类,不建议使用,影响程序速度。
  5. 在 java 源文件中要是要用到两个类名相同的类,需要使用导包和类全名对这个两个类进行区分

示例:

package com.cnblogs.www.conyoo;

import com.cnblogs.text.Article;
import com.cnblogs.text.Words; public class Blog{
public static void main(String[] args) {
System.out.println(new Article());
System.out.println(new Words());
System.out.println(new com.cnblogs.essay.Words());
}
}

Java基础语法:包机制的更多相关文章

  1. Java学习 (九)基础篇 包机制&JavaDoc

    包机制 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间 包语句的语法为: package pkg[.pkg2[.pkg3...]]; 一般利用公司域名倒置作为包名:com.feng.x ...

  2. Java匹马行天下之JavaSE核心技术——Java基础语法

    Java基础语法 一.   认识Java 1. Java 简介 java 是一种高级的面向对象的程序设计语言,使用Java语言编写的程序时跨平台的.从pc到手机,都有Java开发的程序和游戏,Java ...

  3. 02:Java基础语法(一)

    Java基础语法 Java的关键字及保留字 关键字(Keyword) 关键字的定义和特点定义:被Java语言赋予了特殊含义的单词特点:关键字中所有字母都为小写注意事项:1)true.false.nul ...

  4. Java基础语法学习

    Java基础语法学习 1. 注释 单行注释: //单行注释 多行注释: /*多行注释 多行注释 多行注释 多行注释 */ 2. 关键字与标识符 关键字: Java所有的组成部分都需要名字.类名.变量名 ...

  5. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  6. Java基础语法(下篇)

     Java基础语法(下篇) 内容概要:        (1)函数的定义        (2)函数的特点        (3)函数的应用        (4)函数的重载               ...

  7. Java基础语法(上篇)

                     Java基础语法(上篇) 知识概要: (1)关键字的表示与规范       (2)标示符              (3)注释                (4 ...

  8. java基础语法(一)

    java基础语法(一) 1.类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念.先有类,然后由类来生成 对象(Object).对象又叫做实例(Instance). 2.类由两大部分构成:属性 ...

  9. JAVA基础语法——标识符、修饰符、关键字(个人整理总结)

    JAVA基础语法——标识符.修饰符.关键字 一 . 标识符 1.1    什么是标识符 就是程序员在定义java程序时,自定义的一些名字,例如helloworld 程序里关键字class 后跟的Dem ...

  10. Java基础语法(基本语句)

    Java基础语法 标识符在程序中自定义的一些名称.由26个英文字母大小写,数字:0-9符号:_&组成定义合法标识符规则:1.      数字不可以开头2.      不可以使用关键字Java中 ...

随机推荐

  1. Codeforces Round #648 (Div. 2) D. Solve The Maze

    这题犯了一个很严重的错误,bfs 应该在入队操作的同时标记访问,而不是每次只标记取出的队首元素. 题目链接:https://codeforces.com/contest/1365/problem/D ...

  2. P1268 树的重量(板子)

    题目: 题目描述 树可以用来表示物种之间的进化关系.一棵"进化树"是一个带边权的树,其叶节点表示一个物种,两个叶节点之间的距离表示两个物种的差异.现在,一个重要的问题是,根据物种之 ...

  3. Educational Codeforces Round 89 (Rated for Div. 2) C Palindromic Paths

    题目链接:Palindromic Paths 题意: 给你一个n行m列的矩阵,这个矩阵被0或者1所填充,你需要从点(1,1)走到点(n,m).这个时候会有很多路径,每一条路径对应一个01串,你可以改变 ...

  4. 放苹果 POJ - 1664 递推

    把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 <= t < ...

  5. C#程序报找不到时区错误

    原因:win10电脑里的时区在win7里不全有 解决:将win10时区注册表导出,在win7电脑上安装 时区注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wi ...

  6. C# 同步和异步(概念理解)

    C#  同步和异步 IO 概念区分 四个相关概念: 同步(Synchronous) 异步( Asynchronous) 阻塞( Blocking ) 非阻塞( Nonblocking) 同步异步图解 ...

  7. MySQL 基础面试题

    请写出什么是事务? 事务是一组不可分割的 DML 语句,事务处理可以用来维护数据库的完整性,保证一组 SQL 语句要么全部执行成功,要么全部不执行,只有 InnoDB 存储引擎才支持事务 . 事务的特 ...

  8. Leetcode(215)-数组中的第K个最大元素

    在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 ...

  9. HihoCoder1445 后缀自动机二·重复旋律5(后缀自动机 子串种数)

    题意: 询问串的不同子串个数 思路: 后缀自动机每个节点表示以当前字符结尾的一系列后缀,个数为\(maxlen - minlen\),其中\(minlen = maxlen[father]\). 代码 ...

  10. npm config set registry

    npm config set registry $ npm config set registry $ npm config set registry https://registry.your-re ...