final
可以修饰类、属性、方法、局部变量、参数,不能修饰接口!final
修饰类:该类不能被继承(解释了为什么不能修饰接口,不过接口里面的属性、方法等是可以用final
修饰的);final
修饰属性:表示该属性是一个常数,即值不能改变;final
修饰方法:该方法所在的类可以被继承,但是该方法不允许被重写。同时我们知道父类的private
方法是不能被重写的,因此private
的方法实际上默认就是final
的;final
修饰局部变量:表示该局部变量是常数。但是需要注意,在修饰局部变量时,可以先仅仅是申明而不赋值,但是必须要在第一次使用前给它赋初值,并且赋值后不能修改;final
修饰参数:可以读取改参数,但是不能修改。注意:final
如果修饰的是一个引用,比如说Student a = new Student();
,那么不可以a = b;
(假设b
是另一个Student
类型的对象),但是可以对a
所指向的这个Student
类的内部属性进行修改,比如修改其姓名年龄之类的。
static
可以修饰:属性,方法,代码段,内部类(静态内部类或嵌套内部类)static
修饰的属性其值是可变的,它更强调的是“单例”性static
修饰的属性、方法、代码段可以在不创建该类的对象的情况下被调用,且即便是该类创建了很多个对象,被static
修饰的部分永远只有一份实例,所有的对象共同享有这一个实例,如果不小心的话这有可能会导致一些问题static
不能喝this、super
联用,因为static
与具体对象无关,而this
和super
显然有关static
不可以修饰局部变量java中被static修饰的成员变量,存储在方法区(注意不是堆也不是栈)!
static final
和final static
是一样的,不过习惯上都写成static final
这个修饰符就是综合了static和final两者的功能。
static
强调唯一性,而final
强调不可变性
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_43842093/article/details/123023012
内容来源于网络,如有侵权,请联系作者删除!