3-6、final
2023-12-13 14:31:55
1、final关键字
- final是最终的意思,在java中,final是一个关键字,它可以被用来修饰局部变量、类、成员变量、成员方法。
2、final修饰局部变量
2-1、基本数据类型
- 该变量必须在使用之前赋值,且只能被赋值一次
- final修饰局部变量,在定义时该变量可以不被直接初始化,但是在使用该变量之前,该变量必须完成初始化,否则报错!
final String a = "123";
// 报错,无法为最终变量a分配值
a = "abc";
final int b;
// 报错,可能尚未初始化变量b
System.out.println(b);
// final修饰局部变量,在定义时该变量可以不被直接初始化,但是在使用该变量之前,该变量必须完成初始化,否则报错!
final boolean c;
c = true;
System.out.println(c);
2-2、引用数据类型
- 当final修饰引用数据类型(类、接口、数组)的变量,则引用变量所指向的对象(即该变量所存放的地址值)不能更改,但是该对象的内容(即地址值上存储的内容)可以更改!!
final int[] arr = new int[]{1,2,3};
arr[0] = 1;
// 报错 无法为最终变量arr分配值
arr = null;
3、final修饰类
- 修饰类:这个类没有子类(不能被继承,俗称“断子绝孙类”),但是该类可以有父类,可被实例化
public final class Animal {
}
// 报错,无法从最终Animal进行继承
public class Dog extends Animal{
}
4、final修饰方法
- 修饰方法:这个方法不能被子类重写
public class Animal {
public final void eat(){
}
}
public class Dog extends Animal{
// Dog中的eat()无法覆盖Animal中的eat()
// 被覆盖的方法为final
public void eat(){
}
}
5、final修饰成员变量
- final修饰成员变量:该成员变量必须在其所在类对象创建之前被初始化(且只能被初始化一次)
public class Dog{
// 报错 ,变量 name 未在默认构造器中初始化
public final String name;
}
- 初始化有三种方式
方式1
- 直接声明+赋值
public class Dog{
public final String name = "jack";
}
方式2
- 在构造方法中初始化
public class Dog{
public final String name;
public Dog() {
name = "jack";
}
}
方式3
- 在构造代码块中将其初始化(赋值)
public class Dog{
public final String name;
{
name = "jack";
System.out.println("构造代码块");
}
public Dog() {
System.out.println("Dog()");
}
}
文章来源:https://blog.csdn.net/sinat_35615296/article/details/134967738
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!