static
static意为静态的,但凡被static修饰说明属于类,不属于类的对象。
加载:static在类加载时初始化(加载)完成。
可修饰:
- 内部类
- 方法
- 成员变量
- 代码块
注意:
static方法不能兼容this关键字。
你不能覆盖Java中的静态方法,因为方法覆盖基于运行时的动态绑定,静态方法在编译时使用静态绑定进行绑定。
虽然可以在子类中声明一个具有相同名称和方法签名的方法,看起来可以在Java中覆盖静态方法,但实际上这是方法隐藏。
final
加载:final可以在编译(类加载)时初始化,也可以在运行时初始化,初始化后不能被改变。
可修饰:类、内部类、方法、成员变量、局部变量、基本类型、引用类型。
- final修饰基本类型:值不能被修改
- final修饰引用类型:引用不可以被修改也就是说不能指向其他对象,但是该引用的对象内容可以被修改
- final修饰方法,方法不可以重写,但是可以被子类访问,前提是方法不是private类型
- final修饰类,类不可以被继承
static final
可修饰:成员变量、方法、内部类。
- 成员变量:属于类的变量且只能赋值一次
- 方法:属于类的方法且不可以被重写
- 内部类:属于外部类,且不能被继承