Java中的final关键字使用方式

目录
  • 一、final概述
  • 二、使用方式
    • 修饰类
    • 修饰方法
    • 修饰变量
    • 局部变量—引用类型
    • 成员变量

一、final概述

子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种随意改写的情况,Java提供了final 关键字,用于修饰不可改变内容。
final: 不可改变。可以用于修饰类、方法和变量。

  • 类:被修饰的类,不能被继承。
  • 方法:被修饰的方法,不能被重写。
  • 变量:被修饰的变量,不能被重新赋值。

二、使用方式

修饰类

格式如下:

final class 类名 {
}

查询API发现像 public final class String 、public final class Math 、public final class Scanner
等,很多我们学习过的类,都是被final修饰的,目的就是供我们使用,而不让我们所以改变其内容

注意:如果一个类被final修饰那么这个类不能有任何的子类。一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写(因为没子类。)

修饰方法

格式如下:

修饰符 final 返回值类型 方法名(参数列表){
    //方法体
}

重写被 final 修饰的方法,编译时就会报错。

对于类、方法来说,abstract关键字和final关键字不能同时使用,因为矛盾。有抽象方法的abstract类被继承时,其中的方法必须被子类Override,而final不能被Override。

修饰变量

局部变量—基本类型

基本类型的局部变量,被final修饰后,只能赋值一次,不能再更改。

代码如下:

public class FinalDemo1 {
    public static void main(String[] args) {
        // 声明变量,使用final修饰
        final int a;
        // 第一次赋值
        a = 10;
        // 第二次赋值
        a = 20; // 报错,不可重新赋值
        // 声明变量,直接赋值,使用final修饰
        final int b = 10;
        // 第二次赋值
        b = 20; // 报错,不可重新赋值
    }
}

思考,如下两种写法,哪种可以通过编译?

写法1:

final int c = 0;
for (int i = 0; i < 10; i++) {
    c = i;
    System.out.println(c);
}

写法2:

for (int i = 0; i < 10; i++) {
    final int c = i;
    System.out.println(c);
}

根据 final 的定义,写法1报错!写法2,为什么通过编译呢?因为每次循环,都是一次新的变量c。这也是大家需要注意的地方。

局部变量—引用类型

引用类型的局部变量,被final修饰后,只能指向一个对象,地址不能再更改。但是不影响对象内部的成员变量值的修改,

代码如下:

成员变量

成员变量涉及到初始化的问题,初始化方式有两种,只能二选一:
显式初始化:

public class User {
    final String USERNAME = "张三";
    private int age;
}

构造方法初始化:

public class User {
    final String USERNAME ;
    private int age;
    public User(String username, int age) {
        this.USERNAME = username;
        this.age = age;
    }
}

到此这篇关于Java中的final关键字使用方式的文章就介绍到这了,更多相关Java final 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Java中的final关键字

    1 修饰属性或者变量 无论属性是基本类型还是引用类型,作用都是变量里面存放的"值"不可变 经常和static关键字一起使用,作为常量 1 基本类型,变量放的是实实在在的值,如1,"abc"等 2 引用类型,变量放的是个地址,所以用final修饰引用类型变量指的是它里面的地址不能变,即它只能指向初始时指向的那个对象,而不关心指向的对象内容的变化 所以修饰的变量必须被初始化 public static final String LOAN = "loan&quo

  • Java中final关键字和final的4种用法

    目录 1.final 定义 2.final 的 4 种用法 2.1.修饰类 2.2.修饰方法 2.3.修饰变量 2.4.修饰参数 3.final 作用 重要说明:本篇为博主<面试题精选-基础篇>系列中的一篇,查看系列面试文章请关注我. Gitee 开源地址:gitee.com/mydb/interv- 1.final 定义 final 翻译成中文是"最终"的意思,它是 Java 中一个常见关键字,使用 final 修饰的对象不允许修改或替换其原始值或定义. 比如类被 fin

  • 学习Java的static与final关键字

    static:(静态修饰符)面向对象中static修饰的内容是隶属于类,而不是直接隶属于对象的,所以static修饰的成员变量一般称作类成员变量,而static修饰的方法一般称作类方法. 分类: 1.static变量,也叫作静态变量或者类变量.另一种是没有被static修饰的变量,叫实例变量. 2.static方法,也叫作静态方法或者类方法,静态方法中不能定义静态变量,实例方法也不能. 3.static代码块,静态块中,可以访问静态变量,调用静态方法. 注意事项: 1.static不依附于任何对

  • Java基础之final关键字作用案例

    final关键字的作用 final关键字可以用来修饰引用.方法和类. 1.final关键字修饰类 当用final关键字修饰一个类后,这个类不能被继承.代码示例如下:  所以当定义一个类时,需要想好该类将来是否会被继承. 2.final关键字修饰方法 当用final关键字修饰一个方法后,这个方法不能被重写.代码示例如下:  注意:一个类的private方法会隐式的被指定为final方法. 3.final关键字修饰变量 final关键字修饰的变量初始化后不能再被修改.代码示例如下: 如果是引用类型的

  • Java中final关键字详解及实例

    final在Java中可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,如果你试图将变量再次初始化的话,编译器会报编译错误.  final的含义在不同的场景下有细微的差别,但总体来说,它指的是"不可变". 1. final变量 凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量.final变量经常和static关键字一起使用,作为常量.用final关键字修饰的变量,只能进行一次赋值操作

  • Java中final关键字的使用与注意总结

    前言 在java中可以将实例域定义为final.在构建对象是必须初始化这样的值.必须确保在每个构造器执行之后,这个域的值被设置,并且在后面的操作中不再对其修改.使用final声明变量之后,这个值就不能修改,一般final类型的变量都被声明为静态变量,而且是公有类型的,它在内存中被放在一个特有的公共区域. 也就是说,在Java语法中规定,final修饰的成员变量必须有程序员显式地指定初始值. 定义格式为: public  static  final  double pi = 3.1415926:

  • Java关键字final、static使用总结

    一.final 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的"含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. final类不能被继承,没有子类,final类中的方法默认是final的. final方法不能被子类的方法覆盖,但可以被继承. final成员变量表示常量,只能被赋值一次,赋值后值不再改变. final不能用于修饰构造方法. 注意:父类的private成员方法是不能被子类方法覆

  • Java中关键字final finally finalize的区别介绍

    目录 1. final 1.1 final修饰属性 1.2 final修饰方法 1.3 final修饰类 2. finally 3. finalize 这三个除了长得像以外,好像没什么联系 1. final final意为“最后的”,它是Java中的一个关键字. final可以修饰属性.方法.类. 1.1 final修饰属性 从final的含义就不难理解用final修饰内容的用意.final修饰属性,就表示这个属性是“最终的”,也就是不可更改的,换成我们熟悉的名词,也就是“常量”. privat

  • Java关键字详解之final static this super的用法

    目录 1. final 关键字: 2. static 关键字: 3. this 关键字: 4. super 关键字: final,static,this,super 关键字总结 正文开始@Assassin 1. final 关键字: final 关键字,意思是最终的.不可改变的,初始化之后就不能再次修改 ,用来修饰类.方法和变量,具有以下特点: final 修饰的类不能被继承,final类中的所有成员方法都会被隐式的指定为 final 方法: final 修饰的方法不能被重写: final 修饰

  • Java中的final关键字使用方式

    目录 一.final概述 二.使用方式 修饰类 修饰方法 修饰变量 局部变量—引用类型 成员变量 一.final概述 子类可以在父类的基础上改写父类内容,比如,方法重写.那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的.为了避免这种随意改写的情况,Java提供了final 关键字,用于修饰不可改变内容.final: 不可改变.可以用于修饰类.方法和变量. 类:被修饰的类,不能被继承. 方法:被修饰的方法,不能被重写. 变量:被修饰的变量,不能被重新赋值. 二.使用方式 修

  • JAVA中的final关键字用法实例详解

    本文实例讲述了JAVA中的final关键字用法.分享给大家供大家参考,具体如下: 根据上下文环境,java的关键字final也存在着细微的区别,但通常指的是"这是无法改变的."不想改变的理由有两种:一种是效率,另一种是设计.由于两个原因相差很远,所以关键子final可能被误用. 接下来介绍一下使用到final的三中情况:数据,方法,类 final数据 许多编程语言都有某种方法,来向编译器告知一块数据是恒定不变的.有时数据的恒定不变是很有用的,例如: 1. 一个编译时恒定不变的常量 2.

  • 浅谈Java中的final关键字与C#中的const, readonly关键字

    在编程语言中都有某种方式,告知编译器一块数据是恒定不变的.有两个需求 1. 一个永不改变的编译器常量 2. 一个在运行时被初始化的值,而这个值不会被改变 在Java中,使用final修饰变量实现这两个需求 <pre name="code" class="java">//编译器常量 private final int valueOne = 9; private static final int VALUE_TWO = 99; public static f

  • 深入理解Java中的final关键字_动力节点Java学院整理

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例.final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的. final关键字的含义? final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如

  • Java中的final关键字详解及实例

    Java中的final关键字 1.修饰类的成员变量 这是final的主要用途之一,和C/C++的const,即该成员被修饰为常量,意味着不可修改. 上面的代码对age进行初始化后就不可再次赋值,否则编译时会报类似上图的错误. 如果修饰的是引用类型的变量,那么初始化后就不能让他指向另一个对象,如下图所示 2.修饰方法 用final关键字修饰的方法是不能被该类的子类override(重写),因此,如果在想明确禁止 该方法在子类中被覆盖的情况下才将方法设置为final的. 注:类的private方法会

  • Java中的final关键字深入理解

     java final关键字详解: 前言: Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例.final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的. final关键字的含义? final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,

  • 深入浅析Java中的final关键字

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正. final 对于常量来说,意味着值不能改变,例如 final int i=100.这个i的值永远都是100.但是对于变量来说又不一样,只是标识这个引用不可被改变,例如 final

  • 详解Java中的final关键字的使用

    final含义 final是Java中的一个保留关键字,可以声明成员变量.方法和类.一旦你将引用声明为final类型,你将不能再改变这个引用了.编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误. final变量 凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫做final变量.下面是final修饰变量的例子: final int constValue = 1; // constValue = 2; The final local v

  • Java中的final关键字详细介绍

    •final变量如果在变量前加final关键字,则这个变量一旦被初始化,便不可再改变. 如果一个final变量是类成员变量,则必须被初始化,且只能被初始化一次. 方法中的参数也可以是final变量.这在我们需要传递引用型的变量时非常有用,因为有时候我们并不希望调用函数修改该变量而影响到原函数中对象的值.因此将引用型变量设为final类型可以有效方式变量被调用参数修改.此时在调用方法中只可以使用该变量,但不能对其做任何修改. 复制代码 代码如下: void test(final int a){ 

随机推荐