前言
在学习Java的过程中,会发现在写代码时经常用到Java中的关键字,不管是类,还是方法和变量的创建都离不开关键字的使用。它们可以用来表示一种基本的数据类型,也可以来表示程序的结构,还有返回值的类型。Java里一共有53个关键字,今天我们就来分析一下关键字中的final。final可以修饰类、方法、属性,而不同的修饰也会得到不同的效果。
修饰类
先创建一个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
结语
Java中final对类修饰时,该类便不能被继承。对方法修饰时,该方法可以重载但是子类继承后无法重写,如果想要重写,可以在方法前加上private,子类便没有了该方法的访问权限,于是子类出现与父类相同的方法便不受final的影响。Final修饰变量只能被赋值一次,而后不能改变。