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 ...
随机推荐
- BZOJ1069 SCOI2007 最大土地面积 凸包、旋转卡壳
传送门 在这里假设可以选择两个相同的点吧-- 那么选出来的四个点一定会在凸包上 建立凸包,然后枚举这个四边形的对角线.策略是先枚举对角线上的一个点,然后沿着凸包枚举另一个点.在枚举另一个点的过程中可以 ...
- Spark性能优化指南——基础篇(转载)
前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作 ...
- asp.net调用前台js调用后台代码分享
asp.net调用前台js调用后台代码分享 C#前台js调用后台代码前台js<script type="text/javascript" language="jav ...
- babel-preset-env使用指南
文章概览 babel-preset-env是非常重要且常用的一个插件预设,掌握它的用法以及实现原理非常有必要. 本文主要内容包括:babel-preset-env是什么.入门实例.如何配置以支持特定版 ...
- 十四、怎么获取data-id中的值
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Python学习第十八篇——低耦合函数设计思想
import json 2 def greet_user(filename): 3 try: 4 with open(filename) as f_obj: 5 username = json.loa ...
- python知识点及面试面试大集合
题目来源:武sir--一个很有意思的人,点击这儿跳转 一.基础篇 为什么学习Python? 通过什么途径学习的Python? Python和Java.PHP.C.C#.C++等其他语言的对比? 简述解 ...
- C++诡异异常处理
虽然现在C++头文件允许只编译一次,但仍然可能因为头文件引用引起问题,当出现:“构造函数初始值设定项列表只能在构造函数定义中使用”,可能的原因是头文件互相引用导致的. 出现“error LNK1120 ...
- JS_左边栏菜单
需求: 要求实现左边栏菜单点击一下就弹开,其他的隐藏.再点击一下就隐藏. 最多只能有一个菜单的详细内容会显示出来. 三个菜单实现联动效果. 代码如下: 1 <!DOCTYPE html> ...
- CentOS的el5, el6, el7代表什么
https://www.cnblogs.com/EasonJim/p/9051851.html el: enterprise linux?