Java 复习笔记(四) - 转自 廖雪峰的 Java 教程
接口
比抽象类还要抽象,没有实例字段,只有方法,方法类型默认为 public abstract
。接口也可以存在继承关系。
Java 中接口特指 interface
,表示一个接口类型和一组方法签名,而编程接口泛指接口规范,如方法签名,数据格式,网络协议。
default 方法
用 default 修饰的接口方法,可以不必在子类中实现,可以在需要时进行覆写。这样做的好处是,开发后期对接口添加额外方法时,不必修改所有所有子类,按需覆写即可。
静态字段和静态方法
静态字段属于所有实例“共享”的字段,实际上是属于class的字段;
调用静态方法不需要实例,无法访问this,但可以访问静态字段和其他静态方法;
静态方法常用于工具类和辅助方法。
包
包可以解决类型冲突。
位于同一个包的类,可以访问包作用域的字段和方法。不用 public、protected、private 修饰(default 即不加修饰符)的字段和方法就是包作用域。
public 可以跨包访问,private 不可访问,protected 介于两者之间。
import
导入其他包下的类。完整类名 = 包名 + 类名,若类名为 *
,表示导入该包下的所有类。
编译器自动导入的包:
- 默认自动
import
当前package
的其他class
- 默认自动
import java.lang.*
包名不存在父子关系,相同目录结构下的包需要单独导入。比如 java.lang
和 java.lang.reflect
是不同的包,前者自动导入,使用后者仍需要手动导入。
引入不同包下相同类名的类,只能导入一个类,其他同名类需要使用完整类名进行调用。所以要注意不要和 java.lang
包的类重名。
包作用域是指一个类允许访问同一个 package
的没有 public
、private
修饰的 class
,以及没有 public
、protected
、private
修饰的字段和方法。
只要在同一个包,就可以访问 package
权限的 class
、field
和 method
。
一个 .java
文件只能包含一个 public
类,但可以包含多个非 public
类。如果有 public
类,文件名必须和 public
类的名字相同。
Java 内建的访问权限包括 public
、protected
、private
和 package
(默认不加修饰符)权限。
classpath 和 jar
classpath 表示类字节码存储路径,也是执行 java 程序的查找路径。
不要把任何 Java 核心库添加到 classpath 中!JVM根本不依赖 classpath 加载核心库!
jar 包本质上是可执行字节码目录的一个 zip
格式压缩包,把 package 组织的目录层级,以及各个目录下的所有文件(包括 .class
文件和其他文件)都打成一个 jar
文件,方便下载和使用。
不建议设置系统变量 classpath
,默认为 .
表示当前目录。在 IDE 中运行 Java 程序,IDE 自动传入的 -cp
参数是当前工程的 bin
目录和引入的 jar
包。
MANIFEST.MF
文件可以提供 jar
包的信息,如 Main-Class
,这样可以直接运行 jar
包。
而 JVM
自带的 Java
标准库,实际上也是以 jar
文件形式存放的,这个文件叫 rt.jar