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基础—笔记—多态、final、抽象类、接口篇
该文介绍了编程中的多态、final和抽象类、接口相关概念。多态允许子类重写父类方法,通过父类引用调用子类方法,实现解耦和提高代码灵活性,但也可能导致无法使用子类特有功能,需通过强制类型转换解决。final用于修饰不可变的类、方法或变量,防止继承、重写和多次赋值。抽象类是一种包含抽象方法的类,用于强制子类重写特定方法,实现多态,适用于模板方法设计模式,解决代码重复问题。
24 0
|
6月前
|
Java
【零基础学Java】—final关键字与四种用法(二十九)
【零基础学Java】—final关键字与四种用法(二十九)
|
21天前
|
Java
Java中final关键字(看这篇就够了)
Java中final关键字(看这篇就够了)
28 0
|
21天前
|
Java API
【JAVA】final、finally、finalize 有什么区别?
【JAVA】final、finally、finalize 有什么区别?
|
7天前
|
Java 容器
【Java探索之旅】继承结构 继承和组合 protected final
【Java探索之旅】继承结构 继承和组合 protected final
13 0
|
21天前
|
Java
java中final使用
java中final使用
|
21天前
|
Java
final 在 java 中有什么作用?
final 在 java 中有什么作用?
|
21天前
|
Java
Java里的关键字 __final
Java里的关键字 __final
|
21天前
|
Java
【JAVA面试题】final关键字的作用有哪些
【JAVA面试题】final关键字的作用有哪些
|
21天前
|
Java
面试官:小伙子来说一说Java中final关键字,以及它和finally、finalize()有什么区别?
面试官:“小伙子,用过final关键字吗?” 我:“必须用过呀” 面试官:“好,那来说一说你对这个关键字的理解吧,再说一说它与finally、finalize()的区别” 我:“好嘞!
20 1