final关键字代表最终、不可改变的
常见四种用法
1.可以用来修饰一个类
package cn.ly.Day.seven.twentyfour;
/*
* 当final关键字用来修饰一个类的时候,格式:
* public final class 类名称{
* //....
* }
* 含义:当前这个类不能有任何的子类。
* 注意:一个子类如果是final的,那么其中所有的成员方法都无法进行覆盖重写(因为final修饰的类没有子类)
*/
public final class MyClass {
public void method(){
System.out.println("方法执行!");
}
}
package cn.ly.Day.seven.twentyfour;
//不能使用final类作为父类
public class MySubClass /*extends MyClass*/ {
}
2.可以用来修饰一个方法
package cn.ly.Day.seven.twentyfour;
/*
* 当final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写
* 格式:
* 修饰符 final 返回值类型 方法名称(参数列表){
* //方法体
* }
* 注意事项:
* 对于子类、方法来说,abstract关键字和final关键字不能同时使用,因为矛盾。
* */
public class Fu {
public final void method(){
System.out.println("父类方法执行");
}
}

3.还可以用来修饰一个局部变量
package cn.ly.Day.seven.twentyfour;
public class Student {
String name;
public Student() {
}
public Student(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package cn.ly.Day.seven.twentyfour;
public class Demo02Final {
public static void main(String[] args) {
int num1=10;
System.out.println(num1);//10
num1=20;
System.out.println(num1);//20
//一旦使用final用来修饰局部变量,那么这个变量就不能进行更改
//“一次赋值,终生不变”
final int num2=200;
System.out.println(num2);
//全都是错误写法,一旦赋值,则不能被改变,而且只能赋值一次
// num2=300;
// num2=;
//正确写法
final int num3;
num3=100;
//对于基本类型来说,不可改变的是变量当中的数据不可改变
//对于引用类型来说,不可改变说的是变量当中的地址值不可改变
Student stu1=new Student("张艺兴");
System.out.println(stu1.getName());
System.out.println(stu1);
stu1=new Student();
stu1.setName("易可爱");
System.out.println(stu1.getName());
System.out.println(stu1);
System.out.println("=========");
final Student stu2=new Student("小易");
stu2.setName("小易呀");
//错误写法
// stu2=new Student("易小");
System.out.println(stu2.getName());
}
}
4.还可以用来修饰一个成员变量
4.1.对于成员变量具有默认值,所有用了final之后必须手动赋值,不会再给默认值了

4.2对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值。

4.3必须保证类当中所有重载的构造方法,都最终会对final的成员变量进行赋值。

本文深入解析Java中final关键字的四种常见用法,包括修饰类、方法、局部变量及成员变量,探讨其对代码不可变性的影响及编程实践中的应用。
293

被折叠的 条评论
为什么被折叠?



