目录
1. static
static可以用来修饰属性、方法和代码块
对于修饰属性,这个类的所有对象共同维护同一份变量。对于修饰方法,可以直接使用类名.方法名()的方式调用。对于修饰代码块,在加载类的时候会执行一次,也就执行这一次。
static修饰的属性存储在方法区中。
2. 单例模式
采取一定的方法,保证这个类在整个系统中只能有一份实例。通常要给一个获取实例的方法,将构造器私有化,在类内部声明一个static修饰的该类对象。
饿汉式
懒汉式
3. 代码块
静态代码块不能调用非static的属性和方法、静态代码块随着类的加载而加载且只加载一次、静态代码块比非静态代码块先执行
非静态代码块除了可以调用非static修饰的属性和方法以外还可以调用static修饰的属性和方法、非静态代码块随着对象的创建而运行,每次创建对象都会执行一次非静态代码块、非静态代码块再构造方法之前执行。
4. final关键字
final修饰的类不能被继承、final修饰的方法不能被重写、final修饰的属性是常量,不能被修改
5. abstract关键字
abstract用来修饰方法表示该方法时抽象方法,抽象方法没有方法体。
用来修饰类表示是一个抽象类,抽象类可以有构造器但不能创建实例。
有抽象方法的类一定是抽象类,抽象类不一定有抽象方法。
子类在继承了抽象类以后一定要重写父类中的所有抽象方法不然子类也还是抽象类。
abstract和final不能同时修饰一个方法和一个类。
因为子类不能重写父类的static方法和private方法,所以abstract不能用来修饰上面两种方法,也不能用来修饰代码块。
6. 接口
interface。
- 一个类可以实现多个接口
- 接口中不能出现构造方法。
- 接口中可以声明静态方法
- 接口中的抽象方法一定是public abstract修饰的
- 接口中的成员变量一定是public final修饰的
- 在Java8以后接口中可以有static修饰的方法,这使得接口工具类可以省略
- 在Java9以后接口中可以有private修饰的方法,供接口内使用
- 在Java8以后还可以声明默认方法,如果实现接口的类中重写了这个方法则以重写的方法为准,如果没重写则为默认方法。
- 当接口和继承的父类的方法冲突(出现同名同参数时),以父类为主。
即