final和static的区别
final修饰的变量有三种:静态变量、实例变量和局部变量,分别表⽰三种类型的常量。
static表⽰“全局”或者“静态”的意思,⽤来修饰成员变量和成员⽅法,也可以形成静态static代码块,但是Java语⾔中没有全局变量的概念
⼀、final 和 staic 区别
成员变量 (能否修改值)
final
final成员变量表⽰常量,只能被赋值⼀次,赋值后不能再被改变
staic
被static修饰的成员变量独⽴于该类的任何对象, static 修饰的变量可以被赋值多次
类(类是否可以不⽤初始化就访问)
final
final类不能被继承,没有⼦类,final类中的⽅法默认是 final 的
static
static 类也不能被继承,可以不⽤初始化⽽访问
⽅法
final
final ⽅法不能被⼦类的⽅法重写,但可以被继承
final 不能⽤于修饰构造⽅法
* :private 不能被⼦类⽅法覆盖,private类型的⽅法默认是final类型的
static
static ⽅法可以被继承,但是不能重写
被static修饰的成员⽅法独⽴于该类的任何对象, 不依赖类特定的实例,被类的所有实例共享。
static修饰的变量 只要这个类被加载,Java虚拟机就能根据类名在运⾏时数据区的⽅法区内定到他们。因此,static对象可以在它的任何对象创建之前访问,⽆需引⽤任何对象。
static⽅法是不在对象上执⾏的⽅法,不需要类的实例化,可以直接通过类调⽤。
⼆、final 和 static ⼀起⽤
修饰成员变量
static final⽤在变量上相当于⼀个”全局变量“,⼀旦初始化后就不能被修改,并且可以通过类名调⽤,整个类共享⼀个
修饰类
表明⽅法不能被⼦类修改(可以被继承被调⽤),并且可以通过类名调⽤
*: static final 与 final static相同
静态属性、静态⽅法和⾮静态的属性都可以被继承和隐藏⽽不能被重写
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论