包也直接对应着操作系统目录层次结构,所以定义了相应包就必须得定义相应层次的文件夹层次。例如有 如下Test.java示例:
package mysite;
class Test
{
public static void main(String [] args)
{
System.out.println("package test successed!");
}
}
假如Test.java在E:/javaLession/Lession3下,这时dos进入到这个目录,执行 javac Test.java,会生成一个test.class编译文件,这时如果继续操作,运行该编译文件:java Test,就会出错,这时必须得手动在E:/javaLession/Lession3下新建一个mysite文件夹,然后把test.class拷贝在这个mysite文件夹下,然后在在E:/javaLession/Lession3下执行 java mysite.Test就运行成功了。
但是如果类比较多,这样手动建立相应文件夹很麻烦,我们可在编译源文件时用javac的-d命令直接生成相应文件夹层次:
在E:/javaLession/Lession3下执行 javac –d . Test.java,编译之后,java会自动生成一个mysite文件夹,并且编译结果生成的class文件Test.class就在这个mysite目录下。
注意:-d后面的点号.意思是在当前目录下生成相应文件目录。
当然我们也可以把编译生成的编译文件放置到其他目录下,例如放到d:盘根目录,可以这样,在E:/javaLession/Lession3下执行 javac –d d:/ Test.java 这时就在d盘生成了mysite目录结构。这时如果想执行d盘中的Test.java文件,则需要将d哦按根目录放进classpath路径中,步骤:
Cmd命令:set classpass=%classpass%;d:/ 就加载进去了。%%中的内容表示之前已经加载的路径。
可以再执行set classpass 查看已经加载的路径。
请注意:因为加了包名的类的全称就是包名+本身类名,所以如果这时进入到mysite目录,然后执行java Test 是行不通的。必须要退 到Test.java文件的当前目录,然后执行
java mysite.Test才会成功。
import语句
有包就需要导入。
引入包中的类:import java.io.File;
引入整个包: import java.io.*;
在同一包中可以相互引用类,而无需import语句。
如果你不通过import导入你要使用的其他包中的类的话,那么你就必须使用该类的全称来访问这个类,你说用import是不是很方便呢???
类的说明符
类的访问说明符:
public 如果你想让其他包中的类访问你 当前的类,那么就必须给类加上public
当然,当你访问其他包中的类时别忘了用import导入哦。
default 默认情况下,类是只能在当 前包中被访问。
类的其他修饰符
final 此关键字表示当前类不能被继 承,她是一个最终类。如果你不想类被继承修改,
就用final吧。例如 String 就是一个最终类。
abstract 抽象类
方法说明 符:
方法的访问说明符:
(1) Public 不同包中的任何类都可以相互访问
(2) protected 如果一个子类的父类是不同包中的类,但因为父类方法使用了protected
关 键字,那么不同包中的子类就可以访问父类的该方法咯。
(3) default 只能在同一包中被访问。例如一个子类的父类是不同包中的类,那么这
个子类都无法访问父类中的默认方 法。因为子类和父类分属于不同包中。
(4) private 只能在同一个类中访问,就是子类继承了父类,父类中的私有方法都不
能 被继承到子类,所以就是子类也无法访问到父类的私有方法。
方法的其他修饰符:
(1) static 此方法属于类本身,而不是类的某个实例
(2) final 为了保证类在被继承过程中保持不变,不让子类重写父类的好方法就是 使
用final关键字。
类中所有private和static方法自然就是final方法哦
(3) abstract 没有方法体的方法就是抽象方法,具体表现就是没有{}和其中内容只有;
注意:抽象方法后一定有一个分号结尾哦!如果类 中有抽象方法,那么该类必须申明为抽象类,而且抽象类是不能实例化一个类对象的哦。另外,如果一个子类继承了一个抽象父类,如果这个子类没有实现父类中定 义的抽象方法,子类也需申明为抽象类,除非子类实现了所有抽象方法。
抽象类不能产生任何类实例的原因就是防止有没有实现的方法的类产生任何对象。
(4) native 该方法允许用户在java中可以使用,但是不能编写的方法
要了解该方法首先就得明白JNI技术(java native interface) 它允许jvm中运 行的java代码 能够与使用其他编程语言(c,c++等) 编写的应用程序和库进行互操作。简单理解为JNI就是java同本地应用程序之间的中介。具体过程要使用到javah.exe编译器,具体就不介绍了。
(5) synchronized 讲多线程时再介绍此修饰符