java之final关键字

2020-09-01  本文已影响0人  是归人不是过客

总结:

1、final修饰的类无法被继承

2、final修饰的方法无法被覆盖

3、final修饰的局部变量一旦被赋值,无法被改变

4、final修饰的成员变量“显示的”初始化,在构造方法调用结束之前能赋值就ok

5、final修饰的成员变量一般和static联用

我们来一 一举栗子:

final修饰的方法无法被覆盖

class A{
    public final void m1() {}
}
class B extends A{
    public final void m1() {}
} // 编译不同通过

final修饰的局部变量一旦被赋值,无法被改变

class A {
    public void m1() {
        final int i;
        i = 100;
//      i = 200; 编译不通过
    }
}

final修饰的成员变量“显示的”初始化,在构造方法调用结束之前能赋值就ok

class A{
//  final int i; 编译不通过
    final int i = 1;
    final int k;
    A(){
        k = 2;
    }
}

final修饰的成员变量一般和static联用,因为放在方法区,不消耗内存

class MyMath{
    // 常量.java规范中要求所欲的常量“大写”
    // 常量:值不可再改变的变量
    public static final double PI = 3.14;
}

再举栗子:

public abstract class p{
    // 入口
    public static void main(String[] args) {
        final Customer c = new Customer("JACK",15);
        // c是final的,无法重新赋值
//      c = new Customer("LUCY",20);
    }
    
}
class Customer{
    String name;
    int age;
    
    Customer(String name,int age){
        this.name = name;
        this.age = age;
    }
}
上一篇下一篇

猜你喜欢

热点阅读