java 中的包概念
Java 中的包package, 就是电脑中的文件夹。我们平时在工作中,文件太多时,都会新建文件夹进行分类管理,java 中的包也是类似的道理,当我们的类太多时,也需要进行分类管理,这时我们就会把类文件放到包中,就是把这个.class文件放到了一个文件夹中,这样也能有效地避免了命名冲突。
当我们对java源文件进行编译时,它会生成一个.class 文件,如果我们在java源文件的顶部,指定一个包名(package net;), 编译时,这个包名会生成一个文件夹,在这里就是net文件夹,编译好的.class文件则会放到该文件夹下。
package net; // 指定包名net public class Test { public static void main(String[] args) { System.out.println("hello"); } }
当包名很长时,如package net.com.cn,这时它就会生成多级文件夹,先生成net文件夹,然后在net文件夹中生成com文件夹,最后在com文件夹中生成cn文件夹,我们编译生成的.class 文件就会放到cn 文件夹中。我们写一个Animal 类,指定包名为net.com.cn
package net.com.cn; public class Animal { private String name; private int age; public Animal( String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
编译之后,你会发现我们当前文夹中多了一个net文件夹,打开net文件夹,发现com文件夹,再打开com文件夹,发现cn 文件夹,在cn文件里面才有我们的Animal.class 类文件。 有了包之后,这个Animal类就有了所属,这个类实际上叫做net.com.cn.Animal, 如果在java源文件中使用这个类创建对象,就要使用类的全称net.com.cn.Animal
net.com.cn.Animal cat = new net.com.cn.Animal();
这样使用类创建对象就非常麻烦了,所以出现了import导包。 把要使用的类直接导进来,我们在源代码中就直接可以使用类名进行书写。 我们写一个test.java文件
import net.com.cn.Animal; // 引入包 public class Test { public static void main(String[] args) { Animal cat = new Animal(); // 直接使用类名进行书写 cat.setName("miaomiao"); System.out.println(cat.getName()); } }
当引入包之后,就是一个类文件有了所属之后,这又带来权限问题。如果包中的class类文件能够被访问,它必须是public的,包中的方法,如果能够被访问,它也必须是public. 包与包之间的类进行访问,被访问的包中的类必须是public权限的,被访问的包中的类的方法也必须是public 权限的。
最后还有一个jar包,它就是一个压缩文件,当我们编译之后,类文件都放到了文件夹中,这时 我们再对文件夹进行压缩,就形成了jar包, 就像我们在文件夹上面,点击右键,生成winrar文件 一样。因为压缩文件体积小,有利于进行传播。第三方包,就是通过 jar进行发布,我们直接导入jar包,就可以对里面的类文件进行使用。
java 中的包概念的更多相关文章
- 理解Java中【包】的概念
Java中用package关键字定义一个包,下面通过几个实验,理解Java中的包的概念和作用. 实验1:先看一个无包的情形 在G盘下新建一个Test.java,如图1: 写下面这些代码 <spa ...
- Java中带包(创建及引用)的类的编译
Java中带包(创建及引用)的类的编译与调试 java源程序的编译大家都知道,也就是cmd中到源文件所在目录下javac **.java即可,当程序中有包声明还能简简单单的直接javac **.jav ...
- Java中,包的概念、常量、静态成员、继承
新建包:左上角-新建-包 命名规则(通常从大到小,方便整合不容易冲突) 例如:com.itnba.maya.test package必须在最顶行,之前不能再有其他代码 使用包: 快捷方式:使用包中的 ...
- java中的“包”与C#中的“命名空间
原文地址:http://www.cnblogs.com/lidabo/archive/2012/12/15/2819865.html Package vs. Namespace 我们知道,重用性(re ...
- Java中的包学习笔记
一.总结 1.引入包的概念的原因和包的作用比如有多个人开发一个大型程序,A定义了一个Math.java类,B也定义了一个Math.java类,它们放在不同目录,使用的时候也是用目录来区分,包实际上就是 ...
- java中的包以及内部类的介绍
1:形式参数和返回值的问题(理解) (1)形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 (2)返 ...
- java中的包有那些 ???
java.util工具包java.sql数据库包java.io输入输出流包java.net网络包java.lang基础包这些是基本的包,还有一些其他的例如集合,反射等的工具包,你可以去查一下java ...
- Java中的包
包:定义包用package关键字. 1:对类文件进行分类管理. 2:给类文件提供多层名称空间. 如果生成的包不在当前目录下,需要最好执行classpath,将包所在父目录定义到classpath变量中 ...
- Java中的包含义
JAVA提供了强大的应用程序接口,既JAVA类库.他包含大量已经设计好的工具类,帮助程序员进行字符串处理.绘图.数学计算和网络应用等方面的工作.下面简单介绍JAVA核心类库中常用的组建包. 1.jav ...
随机推荐
- Materialized View模式
Materialized-View模式是在要求数据格式不利于查询操作的情况下,根据多个数据仓库的数据生成预生成的视图的一种模式.这种模式可以帮助支持高效的查询和数据提取,提高应用程序的性能. 问题 在 ...
- CentOS 7 源码编译安装 Redis
1.下载源码并解压 wget http://download.redis.io/releases/redis-4.0.10.tar.gz tar -xzf redis-4.0.10.tar.gz cd ...
- 性能调优8:分组聚合 - group by
聚合实际上对数据做分组统计,SQL Server使用两种操作符来实现聚合,流聚合(Stream Aggregation)和哈希聚合(Hash aggration).流聚合是非阻塞性的,具有流的特性,流 ...
- H5 67-清除浮动方式三
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Random()种子数
Random rand =new Random(25); int i; i=rand.nextInt(100); 初始化时25并没有起直接作用,rand.nextInt(100);中的100是随机数的 ...
- vue组件化开发组件拆分原则是什么
原则:可复用.可组合: 两大类:页面组件.功能组件: 除了公共头导航.侧导航.脚部内容,还有:
- JS 作用域及作用域链
一.作用域 在 Javascript 中,作用域分为 全局作用域 和 函数作用域 全局作用域: 代码在程序的任何地方都能被访问,window 对象的内置属性都拥有全局作用域. 函数作用域: 在固定的代 ...
- Python学习第十一篇——for 的本质及如何正确修改列表
假如现在有一个列表:magicians_list = ['mole','jack','lucy'],现在想通过一个函数来实现,在列表的每个元素前面加上“the Great”的字样.现在通过一个函数来实 ...
- django的配置文件字符串是怎么导入的?
写在开头: 每个APP都会有配置文件,像下代码Django等等这种的settings里面的配置导入都是字符串的,他们是怎么做的呢? MIDDLEWARE = [ 'django.middleware. ...
- MYSQL: 1292 - Truncated incorrect DOUBLE value: '184B3C0A-C411-47F7-BE45-CE7C0818F420'
MySQL Bugs: #63112: Truncated incorrect DOUBLE valuehttps://bugs.mysql.com/bug.php?id=63112 Error Co ...