Java|Java中的final

简介: Java|Java中的final

前言

在学习Java的过程中,会发现在写代码时经常用到Java中的关键字,不管是类,还是方法和变量的创建都离不开关键字的使用。它们可以用来表示一种基本的数据类型,也可以来表示程序的结构,还有返回值的类型。Java里一共有53个关键字,今天我们就来分析一下关键字中的finalfinal可以修饰类、方法、属性,而不同的修饰也会得到不同的效果。

修饰类

先创建一个Person类和Student类,不用final修饰时,用extends可以轻易的继承,但当我们用final修饰后,会发现Student已经不能继承Person,并报错。这说明final修饰类时,该类便不能被继承。如图1所示:

图1

修饰方法

Final修饰方法就比较难以理解一些,首先要明白两个概念重写和重载。简单说明一下,重载相当于在一个类中,有多个方法它们都有一样的名字,通过传入的参数不同,实现对同一个方法在不同情况下的使用。重写就是一个子类继承了父类的方法,拥有相同的方法名,并对方法进行了改写,这就叫做重写。

Person类中写一个study()方法,并用final修饰,并对方法重载写一个study(int i)方法,可以发现并没有报错,说明final修饰可以重载,如图2所示:

图2

接下来用Student来继承Person,但我们重写这个方法时,可以发现报错,说明final修饰的方法,子类继承后无法重写,意思就是子类和父类不能出现相同的方法,如图3所示:

图3

但是有一个可以让子类和父类中同时出现的方法,这里将用到另一个关键字private,用private修饰的方法,只可以在本类中使用,其他类则没有访问的权限。当我们在被final修饰的方法前加上private后,子类便没有了该方法的访问权限,于是子类出现与父类相同的方法便不受final的影响,如图4所示:

图4

修饰变量

Final修饰变量比较简单,修饰一个基本数据类型时,例如int它只能被赋值一次,而后不能改变,如图5所示:

图5

结语

Javafinal对类修饰时,该类便不能被继承。对方法修饰时,该方法可以重载但是子类继承后无法重写,如果想要重写,可以在方法前加上private,子类便没有了该方法的访问权限,于是子类出现与父类相同的方法便不受final的影响。Final修饰变量只能被赋值一次,而后不能改变。

目录
相关文章
|
21天前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
22 3
|
19天前
|
存储 安全 Java
了解final关键字在Java并发编程领域的作用吗?
在Java并发编程中,`final`关键字不仅用于修饰变量、方法和类,还在多线程环境中确保对象状态的可见性和不变性。本文深入探讨了`final`关键字的作用,特别是其在final域重排序规则中的应用,以及如何防止对象的“部分创建”问题,确保线程安全。通过具体示例,文章详细解析了final域的写入和读取操作的重排序规则,以及这些规则在不同处理器上的实现差异。
了解final关键字在Java并发编程领域的作用吗?
|
29天前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
20 5
|
1月前
|
缓存 安全 Java
Java中 final、finally、finalize 有什么区别?
本文详细阐述了Java中`final`、`finally`和`finalize`的区别:`final`用于修饰类、方法和变量以表示不可变性;`finally`是用于确保在`try-catch`结构中无论是否发生异常都能执行的代码块;而`finalize`是`Object`类的方法,用于在对象被垃圾回收前执行清理工作,但在JDK 9中已被标记为弃用。
21 0
Java中 final、finally、finalize 有什么区别?
|
1月前
|
Java
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
这篇文章详细解释了Java中static和final关键字的用法,包括它们修饰类、方法、变量和代码块时的行为,并通过代码示例展示了它们的具体应用。
152 0
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
|
1月前
|
存储 安全 Java
了解final关键字在Java并发编程领域的作用吗?
了解final关键字在Java并发编程领域的作用吗?
|
1月前
|
Java 程序员 编译器
【Java】继承、super、final、子类构造方法
【Java】继承、super、final、子类构造方法
26 0
|
1月前
|
安全 Java 编译器
了解final关键字在Java并发编程领域的作用吗?
【10月更文挑战第8天】在Java并发编程中,`final`关键字具有重要作用,包括保证变量的可见性和不可变性,防止对象引用被意外修改,并帮助编译器优化读取操作及消除不必要的同步。通过确保变量不可变,`final`增强了多线程环境下的安全性与性能。
|
3月前
|
前端开发 JavaScript Java
【前端学java】java中final修饰符(6)
【8月更文挑战第9天】java中final修饰符(6)
38 2
|
3月前
|
Java Android开发
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
410 1