详细介绍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...
推荐阅读
- Apache多路复用模块(MPMs)介绍
- java之static、static|java之static、static final、final的区别与应用
- 第十六天(请介绍一件让你非常自豪的事情,(不能是职业类的),什么原因感到自豪。)
- typeScript入门基础介绍
- “我不想努力了,能给我介绍个富婆吗(”)
- 今日自我介绍,感恩所遇一切
- 杨梦彤自我介绍
- 第六章|第六章 Sleuth--链路追踪
- 区块链开发平台(以太坊)
- trilinos|trilinos 介绍