Open raocaijia opened 8 years ago
第3部分还早呢,课堂上还会介绍的。现在还都只在一个类里面,实际上一个java文件中可以定义多个类。留待下回分解。
通常来说,一个java文件定义一个java类,这个java类必须和java文件有相同的名字,同时类可见性被声明为public,这是最基本的java代码的组织方式。
可以认为接口(interface)是特殊的类,在javac编译后,interface
和class
一样会产生一个class文件。接口的概念在学习了抽象类后才能搞得比较清楚,这里列举接口和类的区别作为了解:
public static final
static
语句块其他和class
地位相同的java结构还有enum
和annotation
以文件方式组织的java代码是平面的,没有层次结构。为了解决这个问题程序员们考虑把关联性比较强的一些java文件放在一个目录下,利用操作系统的文件系统为java代码提供了一个树状的结构,对应到java上,一个java文件所在的目录就被称为一个包(package)。
在java文件的开头使用语句package a.b.c;
就是声明这个java文件下的类属于a.b.c
这个包,同时也意味着这个java文件位于操作系统上的某个a/b/c
目录,这是个相对路径,java会在CLASS_PATH
配置下的每个目录去匹配对应的包和类。
引入了包后,java类的名字实际上得到了扩展,比如a.b.c.ClassA
和a.b.d.ClassA
会被认为是两个类。
以包的方式组织java代码隐含地为java语言引入了另外一种可见性:包可见性。位于不同包的java类和接口默认是不可见的,import
的作用就是引进一个包下的某些内容,使得引入的内容在当前java文件可见。
比如位于package a.b.c
的类ClassA
需要位于package d.e
类ClassB
,那么就需要在ClassA.java中写明import d.e.ClassB;
,这样在ClassA.java中ClassB
就变成了可见的。
import语句的作用其实只在编译时有用,只是引导编译器去相应包下查找class定义的一种声明,jvm字节码中并没有对应的import指令,所以在java中不能运行时import,import语句必须在类外写明。
前面老师也提到了,一个java文件可以包含多个java class和interface。但是要注意,在一个文件中只有一个class或者interface(互斥)能被声明为public,并且必须和java文件同名。
非public class实际具有包可见性,在编译的时候也会产生单独的class文件,但是不能被包外的java文件import。非public class编译后的class文件会有特殊的可见性标识,使得应用程序在运行时通过类加载器动态加载不属于自己包的非public class也是非法的。
在微课Java语法基础3中有一个部分,就是关于Java主类结构的,其中讲到有以下几种: package import public class Definition interface Definition 这些没太看懂,老师今天也没有讲到,故来求教