首页 > 编程语言 >Java基础11:包机制

Java基础11:包机制

时间:2024-07-28 17:50:11浏览次数:14  
标签:11 java package 源文件 import Java 机制 com

包机制

1. 问题发现

存在这样一个问题:当定义了多个类的时候,可能会发生类名的重复问题。

解决方式:在java中采用包机制处理开发者定义的类名冲突问题。
就好比我们平时的用电脑,一个文件夹下不能存在同名的文件,我们要是有这样的需求,但是又不想换
名字,我们就可以考虑使用新建一个文件夹来存放!在我们的Java中也是这样的,这就是Java中的包。

2. 包的作用

为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。

包的作用:

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

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

包语句的语法格式为:package pkg1[.pkg2[.pkg3…]];
例如,一个Something.java 文件它的内容:

package net.java.util;
public class Something{
...
}

那么它的路径应该是 net/java/util/Something.java 这样保存的。 package(包) 的作用是把不同的
java 程序分类保存,更方便的被其他 java 程序调用。

一个包(package)可以定义为一组相互联系的类型(类、接口、枚举和注释),为这些类型提供访问
保护和命名空间管理的功能。

以下是一些 Java 中的包:

  • java.lang-打包基础的类
  • java.io-包含输入输出功能的函数

开发者可以自己把一组类和接口等打包,并定义自己的包。而且在实际开发中这样做是值得提倡的,当
你自己完成类的实现之后,将相关的类分组,可以让其他的编程者更容易地确定哪些类、接口、枚举和
注释等是相关的。

由于包创建了新的命名空间(namespace),所以不会跟其他包中的任何名字产生命名冲突。使用包这
种机制,更容易实现访问控制,并且让定位相关类更加简单。

3. 创建包

创建包的时候,你需要为这个包取一个合适的名字。之后,如果其他的一个源文件包含了这个包提供的
类、接口、枚举或者注释类型的时候,都必须将这个包的声明放在这个源文件的开头。

包声明应该在源文件的第一行,每个源文件只能有一个包声明,这个文件中的每个类型都应用于它。

如果一个源文件中没有使用包声明,那么其中的类,函数,枚举,注释等将被放在一个无名的包
(unnamed package)中。

一般利用公司域名倒置作为包名。

例子:
www.baidu.com 包名:com.baidu.www
bbs.baidu.com 包名:com.baidu.bbs
blog.baidu.com 包名:com.baidu.blog

4. import 关键字

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

在 java 源文件中 import 语句应位于 package 语句之后,所有类的定义之前,可以没有,也可以有多
条,其语法格式为:

import package1[.package2…].(classname|*);

如果在一个包中,一个类想要使用本包中的另一个类,那么该包名可以省略。

要是要用到其他包下的类,就必须要先导包!

如果两个类重名,需要导入对应的包,否则就需要写出完整地址:

com.kuang.dao.Hello hello = new com.kuang.dao.Hello()

import 关键字引入,使用通配符 "*" , 导入io包下的所有类!

import java.io.*;

【不建议这样使用,因为会全局扫描,影响速度!】

使用 import 关键字引入指定类:

import com.kuang.Hello;

【注意】类文件中可以包含任意数量的 import 声明。import 声明必须在包声明之后,类声明之前。

标签:11,java,package,源文件,import,Java,机制,com
From: https://www.cnblogs.com/Konon/p/18328605

相关文章

  • Java基础10:拓展运算符、字符串连接符、三元运算符
    扩展运算符publicstaticvoidmain(String[]args){ inta=10; intb=20; a+=b;//a=a+b System.out.println(a+":"+b);}字符串连接符"+"运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。//字符串......
  • java-01
    Java入门IDEA优化idea插件翻译、阿里巴巴代码规范指导IDEAdebug使用Stepinto:单步执行(一行一行代码执行),如果遇到子函数,就会进入子函数,并且继续单步执行。就是每一行需要执行的代码都不跳过,一行一行进行。Stepover:在单步执行的时候,如果遇到子函数,并不会进入子函数,而是......
  • Java基础09:逻辑运算符、位运算符
    逻辑运算符逻辑与:&&和&,逻辑或:||和|,逻辑非:!。publicstaticvoidmain(String[]args){ booleana=true; booleanb=false; System.out.println("a&&b="+(a&&b));//false System.out.println("a||b="+(a||b));......
  • STM32第二十三课:GUI-Guider安装使用及项目移植(7.11版本)
    目录目标一、GUI-Guider获取与安装1.GUI-Guider获取2.安装二、使用步骤1.创建一个新项目2.快速使用三、项目移植注意事项目标1.安装GUI-guider。2.学会使用GUI-guider设计界面。3.学会将GUI-guider设计后的界面移植到项目工程中。一、GUI-Guider获取与安装 ......
  • django学习入门系列之第五点《javascript的条件语句和函数》
    文章目录5.6条件语句5.7函数往期回顾5.6条件语句if(){}elseif(){}5.7函数#python中函数定义的格式deffunc{函数的内容}#使用函数func()//javascript函数中的内容functionfunc(){函数的内容}//使用函数func()往......
  • Java基础07:基本运算符
    运算符运算符operatorJava语言支持如下运算符:算术运算符:+,-,*,/,%,++,--赋值运算符=关系运算符:>,<,>=,<=,==,!=instanceof逻辑运算符:&&,||,!位运算符:&,|,^,~,>>,<<,>>>(了解!!!)条件运算符?:扩展赋值运算符:+=,-=,*=,/=二元运算符publicstaticvoidmain(Str......
  • Java基础08:自增自减运算符,初识Math类
    一元运算符自增(++)自减(--)运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,而自增自减运算符是一个操作数,分为前缀和后缀两种。publicstaticvoidmain(String[]args){ inta=3; intb=a++;//执行完后,b=3。先给b赋值,再自增。 intc=++a;//执......
  • java使用google开源工具Thumbnailator实现图片压缩
    Thumbnailator,一款google使用的开源的图片压缩工具类。github地址:https://github.com/coobird/thumbnailator优点:1、压缩程度可控制,想压缩成多小就多小。2、压缩之后图片尽可能的不失真。3、压缩速度要快。4、代码简单,依赖较少。5、可以实现对图片到编辑,如如旋转,裁切,加......
  • Java
    Java入门IDEA优化idea插件翻译、阿里巴巴代码规范指导IDEAdebug使用Stepinto:单步执行(一行一行代码执行),如果遇到子函数,就会进入子函数,并且继续单步执行。就是每一行需要执行的代码都不跳过,一行一行进行。Stepover:在单步执行的时候,如果遇到子函数,并不会进入子函数,而是......
  • java的几种算法结构
    顺序结构1.java的最基本的结构就是顺序结构除非特别指明,否则就按照顺序一句一句执行2.顺序结构是最简单的算法结构3.语句与语句之间.框与框之间是按从上到下的顺序进行的,他是由若干个依次执行的处理步骤组成的,它是任何算法的离不开的一种基本算法结构选择结构if单选择结构......