详细介绍final关键字的使用

详细介绍final关键字的使用
大家好,这里是可傥。接下来,我将为大家好好介绍一下关于final关键字的用法。
final关键字,意思是不可更改的。那在java里面,它修饰的变量,方法以及类,分别是怎么使用的呢?牢记“不可更改”,就能好好理解它的用法。
一、修饰变量 final修饰变量的时候,不可更改的变量顾名思义就是常量。java中变量有基本数据类型和引用数据类型两种。修饰基本数据类型,基本数据类型的值不能发生改变。而对于引用类型,则表示引用地址不能发生改变,而对象的内容是可以改变的。如下面代码:
这是一个user类,里面一个name属性

public class User { private String name; public User(String name){ this.name = name; }public String getName() { return name; }public void setName(String name) { this.name = name; }@Override public String toString() { return "User{" + "name='" + name + '\'' + '}'; } }

【详细介绍final关键字的使用】接下来,我们用final关键字修饰User引用对象user,然后将user指向一个新的对象,会发生报错,而修改name的值,则正常。
public class UserDemoTset { public static void main(String[] args) { final User user = new User("tangke"); //user = new User("ketang"); //报错 Cannot assign a value to final variable 'user' user.setName("ketang"); //可以正确赋值 System.out.println(user); //打印出来的user的name为ketang } }

可见,final关键词修饰的引用类型,是不能改变其引用地址的,但是可以改变其内部的属性。
二、修饰方法 在jdk1.5以前,final修饰的方法一方面是使final修饰的方法不会被覆盖,另一方面如果方法不大,那么编译器会默认将该方法的调用转为内嵌调用,以此提高效率。而jdk1.5之后,虚拟机会自动进行优化,final关键字只用来禁止方法的重写。在继承类之后,子类只拥有调用该方法的权利,而不拥有重写该方法的权利。注:final修饰的方法只是不能被重写,但是却可以被重载。
父类有一个方法用了final修饰字:
class Parent { private int age; public final int getAge() { return age; } }class Son extends Parent { @Override public int getAge() { return super.getAge(); }//编译报错 }

三、修饰类 final修饰类表示该类不可以被继承。
如果希望某个类不可以被继承的时候,可以用final关键字来修饰,比如常见的String就是一个final修饰的类。final修饰的类,其方法也无法再被重载,也可以当做是final修饰。
final关键字就聊到这,这里是可傥,将会分享自己的所学以及所得,欢迎大家一起交流。csdn地址:https://blog.csdn.net/qq_4225...

    推荐阅读