final与static

final 与 static

  • final
    • 修饰
      • 不能被继承
      • final类中的方法默认是final的
    • 修饰方法
      • 可以被继承,不能被重写
    • 修饰变量
      • 成为常量,只能赋值一次,赋值后不能改变
      • 如果变量是一个对象,只要引用不变它的属性是可以改变的
    • final不能修饰构造方法
    • 父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。
    • 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。
  • static
    • 修饰成员变量
      • 静态变量,加载类的过程中就会为静态变量分配内存,使用类名直接引用
    • 修饰方法
      • 静态方法 不能访问所属类不带static的成员变量和成员方法
    • 修饰代码块
      • 静态代码块 位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。
  • static和final一块用
    • static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
      • 对于变量,表示一旦给值就不可修改,并且通过类名可以访问。

      • 对于方法,表示不可覆盖,并且可以通过类名直接访问。

      • 特别要注意一个问题:

        • 对于被static和final修饰过的实例常量,实例本身不能再改变了,但对于一些容器类型(比如,ArrayList、HashMap)的实例变量,不可以改变容器变量本身,但可以修改容器中存放的对象,这一点在编程中用到很多。
原文地址:https://www.cnblogs.com/tonghaolang/p/7141523.html