Java中final关键字用法总结

Java中的final关键字的作用和用法 多态性:重载是编译时的多态性,因为编译器在编译时就能根据参数列表确定要调用的方法。而重写是运行时的多态性,因为具体调用哪个方法(父类方法还是子类方法)是在运行时根据对象的实际类型确定的。重载的主要目的是允许一个类有多种类似但参数不同的方法,以执行不同的操作。重写(Override):在子类中,可以定义一个与父类同名、参数列表相同但实现不同的方法。对于引用类型,final意味着这个引用不能指向其他的对象,但引用的对象内部的状态仍然可以改变(除非对象的字段也被声明为final)。 阅读详情

final

        1)用final修饰的类不能被继承,没有子类;用final修饰的方法不能被子类的方法覆盖;用final修饰的变量表示常量,只能被赋一次值。

       final不能用来修饰构造方法,父类中用private修饰的方法不能被子类的方法覆盖。final方法是不允许子类方法中写一个同样签名的方法的,但private的情况下,你可以定义一个同样签名的方法。(final方法不能重载,private方法可以重载)

class FinalExtends {

    private void goDown() {

       System.out.println("hello A");

    }

}

 

class FinalTest extends FinalExtends {

    public void goDown() {

       System.out.println("hello B");

    }

 

    public static void main(String[] args) {

       FinalTest xx = new FinalTest();

       xx.goDown();

    }

}

  结果为:

hello B

      2)final类 
   final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final    的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。

 3) final方法 
  如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。   使用final方法的原因有二:

第一、把方法锁定,防止任何继承类修改它的意义和实现。

第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。

class Test2 {

    public void f1() {

       System.out.println("f1");

    }

 

    // 无法被子类覆盖的方法

    public final void f2() {

       System.out.println("f2");

    }

 

    public void f3() {

       System.out.println("f3");

    }

 

    private void f4() {

       System.out.println("f4");

    }

}

 

public class Test1 extends Test2 {

 

    public void f1() {

       System.out.println("Test2父类方法f1被覆盖!");

    }

 

    public static void main(String[] args) {

       Test1 t = new Test1();

       t.f1();

       t.f2(); // 调用从父类继承过来的final方法

       t.f3(); // 调用从父类继承过来的方法

       //t.f4(); //调用失败,无法从父类继承获得

    }

}

  结果为:

Test2父类方法f1被覆盖!

f2

f3

     4)final变量(常量) 
            用final修饰的成员变量表示常量,值一旦给定就无法改变!

                final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。

                从下面的例子中可以看出,一旦给final变量初值后,值就不能再改变了。

另外,final变量定义的时候,可以先声明,而不给初值,这中变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。

对于final类型的实例变量,可以在定义变量时,或者在构造方法中进行初始化;对于final类型的静态变量,可以在定义变量时进行初始化,或者在静态代码块中初始化。

public class Sample {

    static final int a = 10;

    static final int b;

    static {//静态块中初始化final类型静态成员变量

       b = 15;

    }

 

    void methodPrintln() {

       System.out.println("调用方法输出:");

       System.out.println(a);

       System.out.println(b);

    }

 

    public static void main(String[] args) {

       Sample sa = new Sample();

       System.out.println("实例化对象输入");

       System.out.println(sa.a);

       System.out.println(sa.b);

 

       System.out.println("静态成员变量,不用实例化也可以输出:");

       System.out.println(Sample.a);

       System.out.println(Sample.b);

 

       sa.methodPrintln();

    }

}

   结果为:

实例化对象输入

10

15

静态成员变量,不用实例化也可以输出:

10

15

调用方法输出:

10

15

     

      如果将引用类型的变量用final修饰,那么该变量只能始终引用一个对象,但可以改变对象的内容。

public class FinalSample {

    public int var;

 

    public FinalSample(int var) {

       this.var = var;

    }

 

    public static void main(String[] args) {

       final FinalSample s = new FinalSample(1);

       s.var = 2;

       System.out.println(s.var);

 

       // 出错,不能改变引用变量s所引用的FinalSample类的对象

       // s=new FinalSample(2);

    }

}

5)final参数

当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。

  class Test4 {

    public static void main(String[] args) {

       new Test4().f1(2);

    }

 

    public void f1(final int i) {

       // i++; //i是final类型的,值不允许改变的.

       System.out.print(i);

    }

}

深入探索Java中的final关键字用法 在Java编程语言中,final关键字是一个非常重要的概念,它拥有多种用途,为代码的安全性和性能提供了重要保证。简而言之,final用于声明一个元素(变量、方法或类)是最终的,不能被修改、重写或继承。这一特性在代码开发过程中至关重要,它可以防止意外的修改,确保数据的不可变性,提高程序的可读性和维护性。在使用final时,无论是修饰变量、方法还是类,都必须在声明时就明确其用途,确保在后续的代码中不会被更改。例如,对于变量而言,一旦使用final修饰,就意味着它的值不能被二次赋值; 阅读详情

相关推荐

STM32使用 jansson 处理 Json格式字符

STM32 Json 字符的创建和解析1、Json简介2、jansson库的下载安装和报错解决2.1、下载安装2.2、STM32工程文件中导入jansson库2.3、报错解决2.4、修改堆栈空间3、Json 字符的创建4、Json 字符的解析4.1 纯键值对4.2、键的值是一个对象4.3、键的值是一个数组   STM32处理json字符串一般不常见,大部分都是不需要处理的数据,但是在一些通信中需要处理上传或者下传的数据,就别比如在物联网中,有一部分数据就是以json格式传输的,那么就需要对数据经行解析。我简

青烨慕容 7418

Java基础之 final修饰符

目录 1、final修饰符特性 1.1、可修饰内容 1.2、被修饰内容特征 2、应用场景 3、final知识要点总结 4、面试询问关键点 1、final修饰符特性 1.1、可修饰内容       final在Java中是一个保留的关键字,final可修饰:类、方法、类成员变量、方法体内的本地变量       一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码...

一颗浑身披带雪花的松树---[雪松] 1091

Containerd容器运行时的私有仓库镜像推送push和镜像拉取问题解决

向/etc/containerd/config.toml配置添加如下配置,然后重启containerd。向/etc/containerd/config.toml配置添加如下配置,然后重启containerd。通过crictl为k8s拉取镜像如下所示。可以通过ctr命令进行镜像推送。往私有仓库推送镜像如下。

Bulut0907 1万+

在Java中,final修饰的类有什么特点

1、final修饰的类不能被继承。2、Sting就是一个被final修饰的类,我们只能用,不用继承。3、final不仅可以修饰类,还可以修饰变量,被final修饰的变量就是一个常量,只能赋值一次。4、注意final和finally的区别,final是修饰类或者变量,finally是在异常处理中使用,如:try{ }catch(){}finally{}中,finally的作用一般用于必须处理的事情,...

qq_34561253的博客 1903

【OpenCV】手眼标定实战:从原理到calibrateHandEye的完整实现

本文详细解析了机器人视觉中的手眼标定原理与实战,重点介绍了如何使用OpenCV的calibrateHandEye函数实现从数据采集到结果验证的完整流程。文章深入剖析了AX=XB核心方程,区分了眼在手上与眼在手外两种配置,并提供了详细的代码示例与避坑指南,帮助开发者精准建立相机与机械臂末端的坐标转换关系,是机器人精准抓取的关键技术。

weixin_29046611的博客 508

Cadence 17.4 PSpice仿真555定时器输出方波

这里利用555定时器组成多谐振荡器产生1Hz的方波并用PSpice仿真其输出的方波波形。555定时器是一种广泛应用的中规模集成电路。根据其内部组成的不同,可分为双极型(555B)和CMOS型(555C)两类。两种类型的定时器各有所长。双极型定时器具有较大的驱动能力,其输出电流可达200mA,可直接驱动发光二级管、扬声器、继电器等负载。而CMOS型定时器的输入阻抗高、功耗低。

tj_nonstoper的博客 1万+

Java 之 final 详解

在Java中,final 表示“最终的、不可改变的、完结的”,它也是一种修饰符,可以修饰变量、方法和类。final 修饰变量、方法和类时的意义是不同的,但本质是一样的,都表示不可改变,类似 C#里的 sealed 关键字。final 修饰的变量叫做最终变量,也就是常量,修饰的方法叫做最终方法,修饰的类叫做最终类。

流华追梦的专栏 1万+

ubuntu20.04下dsp-slam的运行配置

DSP-SLAM:具有深度形状先验的面向对象的 SLAM

baidu_38431960的博客 3159

java final 类_在Java中,final修饰的类有什么特点

展开全部关于Java中的32313133353236313431303231363533e4b893e5b19e31333264663736final(2010-09-09 14:19:48)转载▼标签: javafinal 分类: Java知识学习Java中的final共有三种用法:final成员变量当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这...

weixin_33240360的博客 686

信号处理中的滤波器的阶数和谐波的理解

最近在读paper的时候,遇到了一些以前遗忘的问题,先重新查找,记录在这里,以备不时之查看。 我相信一定有小伙伴跟我有过一样的疑惑,那就是我们在使用滤波器的时候,总是遇到滤波器的阶数这个概念参数,我们很多都是根据别的paper里的设置,设置自己的科研参数,其实并不是很理解其中的含义: 其实我们常用的阶数N的意思是: 滤波器的阶数,就是指过滤谐波的次数,一般来讲,同样的滤波器,其阶

Miracle.Zhao的博客 2万+

Cesium功能集(十二):Cesium中流体仿真

【代码】Cesium功能集(十二):Cesium中流体仿真。

GIS肆月 601

java final 详解

1、概念 定义:Java中,final 表示最终,也可以称为完结器,表示对象是最终形态的,不可改变的意思。 用途:final 应用于类、方法和变量时意义是不同的,但本质是一样的,都表示不可改变。 使用注意事项: 1)final 修饰变量,表示变量的值不可改变,此时该变量可被称为常量。 2)final 修饰方法,表示方法不能被子类重写; 重写概念:子类中如果创建了一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为方法重写,又称为

春风化雨 4万+

097、Zephyr RTOS驱动开发实战:传感器驱动(陀螺仪)

I2C速率别设太高:LSM6DSO支持最高400kHz,但实际布线有寄生电容时,400kHz容易出错。工业产品我统一用100kHz,稳定压倒一切。FIFO水印值要计算:假设ODR=6.66kHz,每150us产生一组数据,如果水印设32组,则每4.8ms触发一次中断。这个间隔要大于I2C读取耗时(实测约200us),否则中断堆积。电源纹波敏感:陀螺仪对电源噪声敏感,特别是3.3V供电时。我遇到过因为DC-DC纹波太大,陀螺仪输出噪声从0.1dps飙升到2dps。

m0_50546716的博客 118

【java】final关键字的用法

本文转载自:[java]final关键字的几种用法 在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们来了解一下final关键字及其用法。 final关键字 在java中,final的含义在不同的场景下有细微的差别,但总体上来说,它指的是“这是不可变的”。下面,我...

XYZ 632

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java - Java中的final关键字有哪些用法?

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net (1)修饰类:表示该类不能被继承; (2)修饰方法:表示方法不能被重写; (3)修饰变量:表示变量只能赋值一次且赋值以后值不能被修改(常量)。 ...

了解➔熟悉➔掌握➔精通 3万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java中的final关键字有哪些用法?

代码稳定性:通过限制继承、重写和修改,减少意外错误。性能优化final变量和方法可能帮助编译器优化。设计意图明确:使用final明确表达类、方法或变量的不可变性,提升代码可读性。合理运用final关键字,能在复杂系统中构建更健壮、可维护的代码结构,尤其在涉及并发、API设计或安全敏感场景时,其作用尤为显著。

破损的天堂鸟博客 953

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java中final关键字的用法

Java中final关键字的用法 https://www.cnblogs.com/lixiaolun/p/4317004.html final:adj. 最终的,不可改变的 我们就取其字面意思”不可改变的“。 final可以修饰类、方法、变量。那么分别是什么作用呢? (1)修饰类:表示类不可被继承 (2)修饰方法:表示方法不可被覆盖 (3)修饰变量:表示变量一旦被赋值就不可以更改它的值。jav...

thatkrisyang 222

java final定义_Java中final关键字的用法

final在Java中并不常用,然而它却为我们提供了诸如在C语言中定义常量的功能,不仅如此,final还可以让你控制你的成员、方法或者是一个类是否可被覆写或继承等功能,这些特点使final在Java中拥有了一个不可或缺的地位,也是学习Java时必须要知道和掌握的关键字之一。final成员当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思...

weixin_31642733的博客 1047

Java中的final关键字的用法

一.final关键字的基本用法 在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。1.修饰类当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于

weixin_57763462的博客 1583

【Java】final关键字在Java中有哪些用法?

final 关键字可以用于三种场景:final 类:类不能被继承,保证类的不可扩展性。final 方法:方法不能被子类重写。它确保方法行为的不可变性。final 变量:一旦赋值后,变量的值不可再改变。通常用于常量定义。

尹一冰的博客 392

Java中final关键字的几种用法

    在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面大家跟随动力节点java学院小编一起来了解一下final关键字及其用法。 final关键字   在java中,final的含义在不同的场景下有细微的差别,但总体上来说,它指的是“这是不可...

weixin_40599844的博客 506

Java final 关键字的用法?

本文总结了Java中final关键字的多种用法:1.修饰类使类不可继承,但不等同于不可变类;2.修饰方法禁止子类重写;3.修饰字段需在声明或初始化块中完成赋值;4.修饰变量时基本类型值不可变,引用类型引用不可变但对象内容可变;5.修饰局部变量和方法参数时禁止重新赋值;6.强调final不保证线程安全;7.指出只有基本类型和String的static final常量才是编译期常量。final的核心作用是限制变量重新赋值,而不保证对象不可变。

m0_70325779的博客 504

java final 使用_[java]final关键字的几种用法

在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们来了解一下final关键字及其用法。final关键字在java中,final的含义在不同的场景下有细微的差别,但总体上来说,它指的是“这是不可变的”。下面,我们来讲final的四种主要用法。1.修饰数据在编写程序时,我们...

weixin_31002059的博客 111

java final 关键字的各种用法和注意事项

本文详细解析了Java中final关键字的用法:修饰变量时表示值或引用不可变;修饰方法防止子类重写;修饰类则禁止继承;修饰参数确保方法内不被重新赋值。final能提升代码安全性、可读性和并发性,常用于定义常量、保护核心逻辑或创建不可变类。现代JVM已优化final性能,其设计意义大于效率考量。注意事项包括空白final初始化、static final常量命名规范及集合的不可变处理等。

zfj321的博客 1932

Java之final关键字的用法

final关键字代表最终,不可改变。 常见有四种用法: ①.用来修饰一个类 ②.用来修饰一个方法 ③.用来修饰一个局部变量 ④.用来修饰一个成员变量 1.修饰类 格式:public final class 类名称{ //..... } 含义:当前这个类不能有任何的子类,如果一个类去继承用final修饰的类会报错...

一名小白的进阶之路 470

java语言中的final关键字用法

java语言中的final关键字用法

yyyfff43的专栏 605
上一篇: Android:Activity中onCreate方法的参数及用途
下一篇: Logcat 的使用方法详解
johnson67
博客等级 码龄17年 28粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值