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的。

  • 相关阅读:
    Java多线程模式(二)
    HDU 1232 畅通工程
    跨平台实现wchar_t转成char
    小学生玩ACM----优先队列
    JSTL标签急速秒杀jsp页面中的java代码(一)---Core标签库
    项目沟通技术和技巧
    自己写一个strcmp函数(C++)
    Linux Makefile文件编写详细步骤与实践
    JAVA之数组查询binarySearch()方法详解
    系统调用与标准库调用的区别
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/9618178.html
Copyright © 2011-2022 走看看