学懂final , finally ,finalize

final 是java 的一个关键字,表示最后的,不可变的。用于修饰类,变量,方法。

final修饰类

final修饰类的时候,表示类是不可变的,不能被继承的。

public final class A{
}

//这么写会直接编译器报错,不能编译
public class B extend A{
}

final修饰方法

final 修饰方法的话,代表这个方法已经是最后一个版本了,这个方法不能被子类覆盖,重写。

  public class A{
      public void m1(){}
  }

  public class B extend A{
    @Override//这么写直接报错的,不能编译,子类不能覆盖父类的final方法。如果去掉@Override是没问题的。这样的话就是在子类重新定义一个m1方法
    public void m1(){}
  }


final修饰变量

可以修饰实例变量,类变量,和方法的参数变量。
如果变量是基础类型的话,那么这个变量是不可改变的。
如果变量是引用类型的话,那么这个变量的引用是不可改变的。


    final int i = 1;
    final Object b = new Object();


    public void t(){

//        i = 2;
//        b = new Object();
        int j = i+2;
    }

    public void t(int k,final int l,final Object m){

        k = 2;
//        l = 1;
//        m = new Object();

        final int o = 1;
//        o = 2;
    }

final的方法和变量都是编译的时候就已经生成在字节码里面了。所以使用的时候就会获取得特别快。效率比较高。

你可能感兴趣的:(学懂final , finally ,finalize)