包的定义和使用
来源:互联网 发布:知乎注册名字 编辑:程序博客网 时间:2024/05/07 09:44
1.包的定义:package是在使用多个类或接口时,为了避免名称重复采用的一种措施,直接在程序中加入package关键字即可。
包的定义格式:
package 包名称.子包名称;
所谓的包实际上就是一个文件夹,一个*.class 文件要保存在一个文件夹中。
既然包本身就是一个文件夹,所以在java的编译指令中就提供了专门的打包编译命名,在编译的时候加上参数。
打包编译:
javac -d 主类名称.java
此时,生成完*.class 之后,就可以直接访问了。
Java 包名称.子包名称.主类名称;
2. 包的导入
当一个包的class 文件需要使用另一个包的class 文件的时候就需要导入指令。
语法:
import 包名称.子包名称.类名称;--〉手工导入 所需要的类。
import 包名称.子包名称.*; ----> 由JVM自动加载所需要的类。
当一个包导入另一个包时,另一个包中的类必须为public,导入时有以上两种导入方法。
一个包packages1.java中导入举例:
package ZhangRun.club;
import Nsbc.club.Demo;//导入的包
public class packages1 {
public static void main(String[] args) {
System.out.println(new Demo().getInfo());
}
}
另一个包中Demo.java
package Nsbc.club;
public class Demo{
public String getInfo(){
return "Hello,World!!!";
}
}
运行结果:Hello,World!!!
3.如果一个类声明为public class则文件名必须和类名称一样,而且 在一个类中只能有一个public class,但是如果使用class声明一个类的话,则文件名可以和类名称不一样,但是执行的时候必须执行生成的class文件名称。
如果一个类只在本包中访问,则直接声明为class即可,而如果一个类要被外包访问,则必须声明为public class。
在开发中导入包,为了方便即可直接使用“*”的方法导入,如上述2中有说明。
如果导入的几个包中有相同的类名称,则这时候我们就这样使用,以a,b,c,3包为例
我在c包中导入a,b包,而a,b包中有相同的一个类为Demo类,这时候比如我要使用a包中的Demo类,则这样:包名称.子包名称. 类名称(如上2中导入方法)!这样就可以明确指定要使用的类了,,这样实例化也方便。(包.类名称)
比如在c 中实例化a中Demo类:
包名称.子包名称.Demo d = new 包名称.子包名称.Demo();
此时就可以根据实例化对象调用a包中Demo类中的方法了。
4. Java 特殊特性-----静态导入
在JDK1.5之后提供了静态导入功能,静态导入就是如果一个类中的方法全部都是静态static声明的静态方法,则在导入的时候就可以直接使用“import static”的方式导入,导入格式如下:import static 包.类.*;
举例:Demo.java
package Nsbc.club;
public class Demo{
public static String getInfo(){
return "Hello,World!!!";
}
public static String getInfoes(){
return "nishuibaichuan!!!";
}
}
packages1.java
package ZhangRun.club;
import static Nsbc.club.Demo.*; //静态导入
public class packages1 {
public static void main(String[] args) {
System.out.println(getInfo());System.out.println(getInfoes());
}
}
运行结果:
Hello,World!!!
nishuibaichuan!!!
5. jar命令的使用
将*.class文件压缩成一个文件交给用户使用,那么这样的文件就称为jar文件,如果想要生成jar文件,直接使用JDK中bin 目录里的jar.exe 就可以将所有的类文件进行压缩。
6.访问权限
private:可以定义方法,属性,定义的方法和属性不能被类的外部所看到。
default:可以在本包中的任意地方访问。
protected:保护,不同包的非子类不可以访问。
举例:
(1)HelloDemo.java
package nishuibaichuan.club.g ;
public class HelloDemo{
protected String name = "nishuibaichuan";//只能在本包及不同的子类访问
}
(2) ProtectedDemo.java
package nishuibaichuan.club.h;
import nishuibaichuan.club.g.HelloDemo;
class SubHello extends HelloDemo{
public void print(){
System.out.println("访问受保护属性:" + super.name);
}
}
public class ProtectedDemo{
public static void main(String[] args){
SubHello sub = new SubHello();
sub. print();
}
}
public:公共的,都可以访问,不受任何限制。
7. 总结:
private:在一个类名称中可被访问,外部类访问则用setter()和getter()方法进行访问。
default:在同一包中访问,如在Nishui.club包下的src下的g包中。
protected:可跨包访问,如在Nishui.club包下的src下的g包和h包中。
public:公共的,都可以访问,不受任何限制。如在Nishui.club包下的src下的g包和Nishui.club.cn 下的src下的h包都可以访问。
- 包的定义和使用
- 闭包的简单定义和使用
- ORACLE package包中的存储过程的定义和使用
- ORACLE package包中的存储过程的定义和使用
- 包的定义及使用
- oracle中包的定义及使用
- eclipse java 使用自己定义的包
- Oracle Package包的定义及使用
- oracle 函数、包的定义及使用
- makefile的命令包定义及使用
- Java 包的定义与使用
- Java 包的定义与使用
- java包的定义与使用
- Java包的定义及使用
- C++中使用Socket通信包定义和读取方法
- C++中使用Socket通信包定义和读取方法
- C++中使用Socket通信包定义和读取方法
- 全局变量的定义和使用
- 服务器编程入门(7)I/O复用
- JSP编程技术笔试题
- 机房收费系统——MSHFlexGrid控件
- HDU 5066 Harry And Physical Teacher(物理 动量守恒 动能守恒)——BestCoder Round #14
- AWS 常用CLI命令总结
- 包的定义和使用
- JSP面试问题集
- 我所理解的stm8_CANbus过滤器
- sqlite之语句多重引号处理
- 用html基础知识编辑简易计算器
- Objective-C 【单个对象内存管理(野指针&内存泄露)】
- android 程序后台运行,定时刷新,像qq那样,即使程序不启动也照样运行
- Android-Property_Animation介绍及基本实现(属性动画)
- CFileDialog 打开目录文件 保存目录文件