查看原文
其他

【Java教程】详解Java final 关键字

点击关注 👉 鸭哥聊Java 2023-09-01

整理:Java面试那些事儿


java中的final关键字是用来限制用户的。java final 关键字可以在许多上下文中使用。


final关键字可以和变量一起使用,没有值的final变量被称为blank final variable或uninitialized final variable。它只能在构造函数中初始化。空白的 final 变量也可以是静态的,它只会在静态块中初始化。这些我们都会有详细的学习。让我们首先学习 final 关键字的基础知识。


Java最终变量


如果将任何变量设置为 final,则不能更改 final 变量的值(它将是常量)。


最终变量的例子


有一个final变量speedlimit,我们要改变这个变量的值,但是它不能改变,因为final变量一旦赋值就永远不能改变。


class Bike9{ final int speedlimit=90;//final 变量 void run(){ speedlimit=400; } public static void main(String args[]){ Bike9 obj=new Bike9(); obj.run(); } }


输出:

Compile Time Error


领取福利
点击领取:651页Java面试题库


Java最终方法


如果您将任何方法设为最终方法,则无法覆盖它。


最终方法的例子


class Bike{ final void run(){System.out.println("运行");} }
class Honda extends Bike{ void run(){System.out.println("以 100kmph 安全运行");}
public static void main(String args[]){ Honda honda= new Honda(); honda.run(); } }


输出:

Compile Time Error


Java最终类


如果您将任何课程设置为最终课程,则无法扩展它。


最后一堂课的例子


final class Bike{}
class Honda1 extends Bike{ void run(){System.out.println("以 100kmph 安全运行");}
public static void main(String args[]){ Honda1 honda= new Honda1(); honda.run(); } }


输出:

Compile Time Error


final 方法是否被继承?


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


class Bike{ final void run(){System.out.println("running...");} } class Honda2 extends Bike{ public static void main(String args[]){ new Honda2().run(); } }


输出:

running...

什么是空白或未初始化的最终变量?


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


如果你想创建一个在创建对象时初始化的变量,并且一旦初始化就不能改变,它很有用。例如,员工的 PAN 卡号。关注公众号Java面试那些事儿,获取651页Java面试题


它只能在构造函数中初始化。


空白最终变量的示例


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


Que)我们可以初始化空白的最终变量吗?


是的,但仅限于构造函数。例如:

class Bike10{ final int speedlimit;//空的 final 变量
Bike10(){ speedlimit=70; System.out.println(speedlimit); }
public static void main(String args[]){ new Bike10(); } }


输出:

70


静态空白最终变量


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


静态空白最终变量的示例


class A{ static final int data;//空的静态 final 变量 static{ data=50;} public static void main(String args[]){ System.out.println(A.data); } }


什么是最终参数?


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


class Bike11{ int cube(final int n){ n=n+2;// 不能改变,因为 n 是 final 变量 n*n*n; } public static void main(String args[]){ Bike11 b=new Bike11(); b.cube(5); } }


输出:

Compile Time Error


我们可以声明一个构造函数为 final 吗?


不,因为永远不会继承构造函数。



技术交流群


扫码进群记得备注:城市、昵称和技术方向


 

往期精选


  1. 首个封禁GPT的国家是....,OpenAI CEO:我觉得没违规!

  2. IDEA 2023.1 正式发布,新特性真香!

  3. GPT-5不能停!各方反对千人联名

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存