final关键字:
- final修饰类:
(1)fina修饰的类不能被继承,因此该类内的方法自然不能被其子类所 覆盖,所以所有方法被隐式的修饰为final。 - final修饰方法:
(1)final修饰的方法不能被覆盖。 - final修饰变量:
final修饰的变量只能被初始化一次且必须被初始化,初始化的两种方式:
(1)在声明变量的同时初始化,且以后都不能改变这个值。
(2)在声明变量的时候没有初始化,可在初始化块或者构造函数内初始化。 - final修饰参数:
(1)final修饰参数时,参数的值不可改变。如下:
public void fun(final n){
n++; //对声明为final的参数n进行自加,是错误的
System.out.println(n);
}
static关键字:
-
static修饰类:
(1)普通类不能声明为static,内部类可以声明为static,声明为static的内部类和普通类相同可以直接创建对象,否则必须通过外部类对象来new内部类对象。 -
static修饰方法:
(1)static方法在类加载到jvm时随着类的加载而加载,而且只加载一次,独立于类本身,共享于类的所有实例。
(2)可通过类名.静态方法或创建实例访问静态方法。
(3)静态方法的效率要比实例化高。
(4)静态方法的缺点是不自动销毁,而实例化的会被销毁。
(5)static修饰的方法不能使用this和super。 -
static修饰变量:
(1)static修饰的变量叫静态变量或类变量,和静态方法一样,在类加载jvm时加载静态变量,为静态变量分配一次内存。
(2)可通过类名.静态变量或创建实例访问静态变量。 -
static修饰静态代码块:
(1)static代码块是独立于类成员的代码块,可以有多个,位置可以在任意地方,在jvm加载static代码块时,如果有多个代码块,按照他们在类中的先后位置执行他们,每个代码块只会被执行一次。
(2)可在静态代码块中进行初始化操作。
abstract关键字:
- abstract修饰类:
(1)abstract修饰的类不能被创建实例,可以被继承。
(2)抽象类可以继承实体类(抽象类可以包含非抽象方法)。
(3)抽象类的子类如果不完全实现父类的全部抽象方法,则需声明为abstract,否则子类可以不声明为abstract。
(4)抽象类可以有构造方法,供子类调用对父类进行初始化。 - abstract修饰方法:
(1)抽象方法的类一定是抽象类。
(2)抽象类中的抽象方法只有声明。 - abstract不能修饰变量。
总:
final关键字和static关键字可以一起使用。
final和abstract关键字不能一起使用:(无论是类,方法,成员变量,局部变量)
static和abstract不能一起使用:(无论是类,方法,成员变量,局部变量)