zoukankan      html  css  js  c++  java
  • java final

    final关键字可以修饰变量(基本变量与引用),方法和类。

    final修饰变量

    当修饰基本变量时,表明该变量一旦被初始化为某一值就不能再被改变。

    当修饰引用类型的变量时,表示该引用一旦被初始化时指向某个对象,那么这个引用的指向就不能再改变了,但是其指向的对象的值却还是可以改变的。

    被final修饰的变量可以通过以下三种方式初始化

    在它被定义的时候

        public final int a = 10;

    在初始化块里初始化

        public final int a;
    
        // 初始化块中初始化final变量a
        {        a = 10;
        }

    在构造函数里初始化

        public final int a;
    
        // 构造器中初始化final变量a
        public FinalTest() {
            a = 20;
        }

    final修饰形参变量

    final用于修饰形参变量,表示不能在方法中更改参数的值。

        // 形参变量c与str均被final修饰
        // 在方法中不能更改c的值,也不能更改str指向的对象
        public void say(final int c, final String str) {
            c = c*2;                   // Error
            str = new String("Hello"); // Error
            System.out.println(c);
            System.out.println(str);
        }

     final修饰方法

    final修饰方法,则表明不能被子类重写(覆盖)。这样可以保证在继承中方法行为不变。父类中所有的private方法都是隐式指定为final的。对于private方法,如果我们在子类中定义一个与其完全一样的方法,也不能叫做重写,只是重写定义了一个新的方法。

    class Base {
    
        private void f(){
            System.out.println("Base.private()");
        }
        public final void g(){
            System.out.println("Base.final()");
        }
    }
    
    
    class SubBase extends Base{
    
        private void f(){
            System.out.println("OverringBase1.f()");
        }
        public  void g(){ ///Error
            System.out.println("OverringBase1.g()");
        }
    }

     final修饰类

    如果一个类被final修饰则该类不能被继承,当然此时该类中的所有的域都默认是final的。

  • 相关阅读:
    Spring中的Bean的配置形式
    使用外部属性文件配置Bean以及Bean的生命周期方法
    运行时找到main方法所在的类
    获取SpringMVC中所有RequestMapping映射URL信息
    RequestBody只能读取一次的问题
    接口标记为@ResponseBody却不进入ResponseBodyAdvice
    springboot打成jar包后无法解压
    Springboot打包执行源码解析
    关于base64的一个小细节
    Liquibase使用入门
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/9618178.html
Copyright © 2011-2022 走看看