1、有抽象方法的类必须为抽象类,抽象类可以包含抽象方法、非抽象方法抽象类不能实例化,抽象类被设计成只能被继承,可以强迫其子类实现定义的抽象方法,否则编译会报错。可以创建抽象类型引用具体子类。
2、接口就是比抽象类还抽象的存抽象接口,连字段(filed,通常是类成员变量)都不能有,所有接口的默认方法都是public abstract,在Java中,一个类只能继承另一个类,不能从多个类继承,但是一个类可以实现多个接口,多个接口用逗号隔开。
deafult方法,用default在接口中声明的方法,可以不被复写
3、静态方法或者静态字段,不属于实例,而属于类本省,可以通过类名.字段或方法访问。接口的字段只能是public static final类型。
4、作用域:
public的类和接口可以被其他任何类访问‘
private的filed和method无法被其他类访问,嵌套内部类可以访问类中的private
protected作用于继承关系。定义为protected的字段和方法可以被子类访问,以及子类的子类:
5、匿名内部类,写法如下:
Runnable r = new Runnable() {
// 实现必要的抽象方法…
};
静态匿名内部类,用static修饰
6、classpath 是jvm用到的环境变量,用来指示jvm如何搜索class,是一组目录的集合,设置的搜索路径和操作系统有关;
jar包,相当于将package的层级目录打包成一个jar文件,类似于压缩成zip,当需要执行一个jar中的class文件内,将jar包放在classpath文件中即可,创建jar包可以先将package压缩成一个zip压缩文件,在更改成jar文件。文件目录如下:
7、模块:
从Java 9开始引入的模块,主要是为了解决“依赖”这个问题。如果a.jar必须依赖另一个b.jar才能运行,那我们应该给a.jar加点说明啥的,让程序在编译和运行的时候能自动定位到b.jar,这种自带“依赖关系”的class容器就是模块。
模块的后缀为:.jmod