首页 > 编程语言 >Java final关键字

Java final关键字

时间:2023-02-04 21:24:05浏览次数:28  
标签:初始化 Java 变量 void final 关键字 class

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

  1. 变量
  2. 方法

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

1. Java final变量

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

  1. 禁止变量的值被改变;
  2. 禁止方法重写;
  3. 禁止类继承;

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
Java

上面代码执行后生成以下结果 -

[编译错误]Compile Time Error
Java

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();
    }
}
Java

上面代码执行后生成以下结果 -

[编译错误]Compile Time Error
Java

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();
    }
}
Java

上面代码执行后生成以下结果 -

[编译错误]Compile Time Error
Java

问题:是否可继承final方法?

答: 是的,final方法是继承的,但是不能覆盖它。 例如:

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

class Honda2 extends Bike {
    public static void main(String args[]) {
        new Honda2().run();
    }
}
Java

上面代码执行后生成以下结果 -

Output:running...
Java

问题:什么是空白或未初始化的final变量?

在声明时未初始化的final变量称为空白final变量。

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

空白final变量的示例

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

问题:可以初始化空白的final变量吗?

答: 是的,但只能在构造函数中。 例如:

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

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

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

上面代码执行后生成以下结果 -

70
Java

静态空白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);
    }
}
Java

问题:什么是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);
    }
}
Java

上面代码执行后生成以下结果 -

[编译错误]Compile Time Error
 

标签:初始化,Java,变量,void,final,关键字,class
From: https://www.cnblogs.com/cnetsa/p/17092413.html

相关文章

  • Java 多线程学习
    Java多线程学习Thread类学习首先使类继承Thread然后创建run方法其中在线程中run主要是线程执行体在线程中new这个类然后使用start进行线程打开注:线程中是同......
  • java 反射
    1、什么是发射?反射机制指的是程序运行时能够获取自身的信息,在java中,只要给定类的名字,就可以通过反射机制来获得类的所有属性和方法。2、在JVM运行时期可以做什么?......
  • Java lamdba表达式
    JavaLambda表达式函数式接口任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数时接口publicinterfaceRunnable{ publicabstractvoidrun();}推导方法:......
  • java基础:流程控制
    顺序结构Java的执行过程就是顺序结构,除非说明,不然都是一句接一句执行。选择结构if选择结构if(布尔表达式1){//布尔表达式1为true执行}elseif(布尔表达式2){......
  • 基础知识-java程序运行机制
    编译型-compile(直译)操作系统适用,c/c++解释型-网页(对速度要求不高)Java(双重属性)、Javascriptjava运行机制源程序(.java文件)——java编译器——字节码(.class文件)——类装......
  • Java多线程并发04—线程池的合理使用
    为什么使用线程池?线程池做的工作主要是控制运行的线程的数量。线程池的种类Java中常用的线程池主要有四种:newCachedThreadPool、newFixedThreadPool、newScheduledThreadPo......
  • 内部类的 .this 和 .new 关键字
    1.  .this.this关键字可以在内部创建外部类的引用publicclassDotThis{voidf(){System.out.println("DotThis.f()");}publicclassInner{pu......
  • Java多线程并发05-锁说明
    根据锁的各种特性,可将锁分为以下几类:乐观锁/悲观锁独享锁(互斥锁)/共享锁(读写锁)可重入锁公平锁/非公平锁分段锁偏向锁/轻量级锁/重量级锁自旋锁乐观锁/悲观锁乐观锁与悲观锁并......
  • 【JavaScript】2_数据类型
    1、数值数值(Number)在JS中所有的整数和浮点数都是Number类型JS中的数值并不是无限大的,当数值超过一定范围后会显示近似值Infinity是一个特殊的数值表示无穷所以在JS中进行......
  • java基础:java基础语法
    注释单行注释:对某一行进行注释,使用“/注释内容/”标识多行注释:可以书写多行,使用“/*注释内容*//”表示文档注释:这个内容对IDEA是有意义的,/**注释内容*/publicc......