Java学习—final关键字

java中的final关键字用于限制用户修改变量或重写一个类或方法。 java final关键字可以在许多上下文中使用。 final可以是:

  • 变量
  • 方法

final关键字可以应用于变量,没有值的final变量称为空白变量或未初始化的最终变量。 它只能在构造函数中初始化。 空白最终变量也可以是静态的,它将仅在静态块中初始化。 在之后的文章中我们将详细学习这些。 下面先学习final关键字的基础知识。

1.Java final变量

如果将变量设置为final,则不能更改final变量的值(它将是常量)。final关键字应用有以下几点需要注意:

  • 禁止变量的值被修改
  • 禁止方法重写
  • 禁止类继承

final变量的示例:
要改变final变量的值,这是不可能的,因为一个final变量一次分配一个值永远不能更改。如下试图修改 speedlimit 变量的值为 400,这是不允许的。

class Bike9 {
    final int speedlimit = 90;// final variable

    void run() {
        speedlimit = 400; // 不可以修改 final 变量的值
    }

    public static void main(String args[]) {
        Bike9 obj = new Bike9();
        obj.run();
    }
}// end of class

会在编译后产生错误。

2.Java final方法

如果任何方法声明为final,则不能覆盖它。

final方法的示例,下面方法是不能覆盖的 -

class Bike {
    final void run() {
        System.out.println("running");
    }
}

class Honda extends Bike {
    void run() { // final方法,不可以重写
        System.out.println("running safely with 100kmph");
    }

    public static void main(String args[]) {
        Honda honda = new Honda();
        honda.run();
    }
}

上述代码在编译后会报错。

3.Java final类

如果把任何一个类声明为final,则不能扩展它。final类的示例

final class Bike {
}

class Honda1 extends Bike { // 不可以扩展 final 类
    void run() {
        System.out.println("running safely with 100kmph");
    }

    public static void main(String args[]) {
        Honda1 honda = new Honda();
        honda.run();
    }
}

同样编译后会报错。
注:final方法可以继承,但是不可以覆盖。
空白或未初始化的final变量
在声明时未初始化的final变量称为空白final变量。

如果要在创建一个对象时初始化变量,并且变量在初始化后就不会被改变, 这是非常有用的。 例如员工的PAN CARD号码。它只能在构造函数中初始化。
空白final变量的示例

class Student{  
    int id;  
    String name;  
    final String PAN_CARD_NUMBER;  
    ...  
}

注:可以初始化空白的final变量,但只能在构造函数中。

class Bike10 {
    final int speedlimit;// blank final variable

    Bike10() { // 在构造函数中初始化
        speedlimit = 70;
        System.out.println(speedlimit);
    }

    public static void main(String args[]) {
        new Bike10();
    }
}

静态空白final变量

在声明时未初始化的静态final变量称为静态空白final变量。 它只能在静态块中初始化。
静态空白final变量的示例

class A {
    static final int data;// static blank final variable
    static {
        data = 50;
    }

    public static void main(String args[]) {
        System.out.println(A.data);
    }
}

final参数
如果将任何参数声明为final,则不能更改它的值。

class Bike11 {

    int cube(final int n) {
        n = n + 2;// can't be changed as n is final
        // n*n*n; // 不能修改 n 的值
        return n;
    }

    public static void main(String args[]) {
        Bike11 b = new Bike11();
        b.cube(5);
    }
}

上述代码会编译错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li_jeremy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值