java中包的概念

来源:互联网 发布:java websocket 框架 编辑:程序博客网 时间:2024/04/29 18:08

包(package)
1.为了便于管理大型软件系统中数目众多的类,解决类命名冲突的问题,Java引入了包。
跟我们在两个文件夹下存在两个相同名字的文件是一样的。

2.定义包
package myblog;//它必须在第一行(它之前除了注释和空白什么都不能有)
注意:(1)定义了包之后,这个包内的所有类的全名就是:包名.类名
(2)如果不加package语句,则指定为缺省包或无名包。
(3)包对应着文件系统的目录层次。
(4)在package语句中,用“.”来指明包(目录)的层次。
(5)因为我们自定义的包要对应文件系统中的一个目录名,在这个目录名下面存放的是一个类,我们需要建立相应的文件夹,作为包。但是有一个问题,如果我们有成千上万的类是不是我们要手动建立成千上万的包呢?这样繁琐的事情我们还是交给java编译器吧,也就是我们在编译的时候让它自动生成包对应的系统目录,具体做法:javac -d . Test.java(-d指定在什么位置生成包。"."表示在当前目录下生成class文件)javac -d D:/ Test.java(表示在d盘的根目录下生成包;)javac -d . *.java(表示编译当前目录下所有后缀名为.java的文件。)
(6)多包(多层次)大包与小包还有类的层次结构:大包.小包.类名

 

3.import语句
(1)引入包中的类(如果我们只想引入某个包中的类)
import java.io.File;
(2)引入整个包
import java.io.*;(①这样虽然方便,但是当我们导入包中所有的类时,java编译器就会用额外的内存来存储包中类和方法的名字,以便跟踪这个包中所有的元素,这在我们的pc机上没有太大的性能差异。然而当我们在手持设备上,一般的手持设备内存都比较小,这种方式就不太好了,更适合第一种方式想引用哪个类就具体引用哪个②当我们通过网络远程加载一个类时,如果它导入了一包中所有的类,那么在加载的时候就会把所有的类和方法加载到本地来,这就会造成java程序执行时间上的延迟。所以只有当我们需要导入这个包中很多类的时候,再用这种方式。)
(3)在同一包中的类可以互相引用,无需import语句
注意:java.lang包是自动引入的,不需要我们显式的加import引入。因此我们可以直接引用System、String


4.类的访问说明符:
级别    修饰符      同包    不同包
公开    Public        Ok       Ok 
默认                  Ok       No

 

5.类的其它修饰符:
(1)final(表明这个类是一个最终的类,不能由这个类派生出其他的子类比如我们熟知的String类)
     为了确保某个函数的行为在继承过程中保持不变,并且不能呗覆盖(overridden),可以使用final方法。
     为了效率上的考虑,将方法声明为final,让编译器对此方法的调用进行优化。要注意的是:编译器会自行对final方法进行判断,并决定是否进行优化,通常在方法的体积很小,而我们确实不希望它被覆盖时,才将他声明为final。
    class中所有的private和static方法自然就是final。
(2)abstract(抽象类)
①在类中没有方法体的方法,就是抽象方法。
②含有抽象方法的类,即为抽象类。抽象类是不能实例化对象的。
③如果一个子类没有实现(就是看该抽象方法有没有左大括号和右大括号)抽象基类中所有的抽象方法,则子类也称为一个抽象类。
④我们可以将一个没有任何抽象方法的类声明为abstract,避免由这个类产生任何的对象。
(3)native
①native方法是用户在java中可以使用,但是不能编写的方法。
②JNI(Java Native Interface),它允许java虚拟机(JVM)内部运行的java代码能够与用其它编程语言(如C C++ 汇编语言)编写的应用程序和库进行互操作。
③JNI最大的好处是它没有对底层java虚拟机的实现施加任何限制,因此,java虚拟机厂商可以再不影响虚拟机其它部分的情况下添加对JNI的支持。程序员只需编写一种版本的本地(Native)应用程序和库,就能够与所有支持JNI的java虚拟机协同工作。
④JNI可以理解为java和本地应用程序之间的中介。

 

6.方法的访问说明符:
级别     修饰符     同类   同包   子类 不同包
公开     Public      Ok    Ok    Ok   Ok
受保护   Protected   OK    Ok    Ok   No(两个类为父类子类的关系时可以访问) 
默认                 Ok    Ok    No   No
私有     Private     Ok    No    No   No

 

 

0 0
原创粉丝点击