final关键字的详细用法及java中四种权限修饰符总结(干货)


前言

final关键字代表最终、不可变的
常见的四种用法:
1.可以用来修饰一个类
2.可以用来修饰一个方法
3.可以用来修饰一个局部变量
4.可以用来修饰一个成员变量


一、final用来修饰类

public final class 类名称{
//、、、、
}
含义:当前类不能有任何的子类(太监类)一定有父类,

在这里插入图片描述

在这里插入图片描述
如图显示:当我们继承太监类的时候会报错。
不能使用一个final类来做父类
注意:一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写(因为没儿子)

二、final关键字用于修饰成员方法

在这里插入图片描述
在这里插入图片描述
此时我们是可以进行覆盖重写的,但是当我们给父类中的方法添加上final关键字之后,就代表那个方法是最终的,不可以被覆盖重写。
在这里插入图片描述
在这里插入图片描述
此时就会产生错误
但是我们考虑一下这种情况,父类中的抽象方法是一定要被子类覆盖重写的,final一定不可以被覆盖重写那么我们能给抽象方法添加上final关键字吗?
答案是肯定不可以的
我们不可以同时使用abstract和final关键字

三、final用于修饰局部变量

局部变量大家应该都了解,只能在类的大括号内部使用的变量
在这里插入图片描述
通过以上代码,当我们给num1修改值的时候,不会产生错误,而且还可以输出,但是当我们给带 final 的num2修改值时,则会产生错误。
注意:正确写法!只要保证有唯一一次赋值即可
final的不可改变
对于基本类型来说,不可变说的时变量当中的数据不可改变
对于引用类型来说,不可变说的是变量当中的地址值不可改变

四、final用于修饰成员变量

对于成员变量来说,如果使用final关键字修饰,那么这个变量也照样不可变。
1.由于成员变量具有默认值,所以用了final之后必须手动复制,不会再给默认值。
在这里插入图片描述
2.对于final成员变量,要么使用直接赋值,要么通过构造方法赋值。但是只能二者选其一。
在这里插入图片描述
在这里插入图片描述
3.必须保证类中所有重载的构造方法,都最终会对final的成员变量进行赋值。

五、修饰符总结

四种权限修饰符的权限顺序
public > protected > (defult) > private

权限符 public protected (default) private
同一个类(我自己) YES YES YES YES
同一个包(我邻居) YES YES YES NO
不同包子类(我儿子) YES YES NO NO
不同非子类(陌生人) YES NO NO NO

猜你喜欢

转载自blog.csdn.net/tan45du_yuan/article/details/108830384