1.final 修饰类final:最终
final 修饰的类不能被继承
public final class A {
}
//不能被继承,此处报错
//class B extends A{
//
//}
2.final修饰方法
final 修饰的方法不能被重写
public class C {
public final void m1() {}
public void m2() {}
public void m3() {}
}
class D extends C{
//此处报错,不能被重写
// private void m1() {
//
// }
@Override
public void m2() {
super.m2();
}
@Override
public void m3() {
super.m3();
}
}
3.final 修饰属性
1.使用final修饰的属性,称为常量,常量可以在定义的时候赋值(基本就用这个赋值),也可以在构造方法中赋值(只能赋值一次 ,且不能改变)
2.定义常量时,常量名称全部大写,多个单词用下划线分割
注意:一般定义常量时也会使用static修饰
1.static final 修饰的称为静态常量:内存中只存在一份,值不能被改变,在定义时和构造方法中赋值
public class E {
public final static double PI;
private String name;
static {
PI = 3.14;
}
//不能重复定义
// static {
// PI = 3.14;
// }
public final double PI_1;
public E(){
PI_1 = 3.14;
}
public E(String name) {
PI_1 = 3.14;
}
//每创建一次 就会产生一次PI_1 但是用静态修饰的final PI 只会在加载类时加载一次
E e1 = new E();
E e2 = new E();
// 在定义时赋值,此处构造方法内出错
// public final double PI_2;
// public E(){
// PI_2 = 3.14;
// }
}



