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

  • 相关阅读:
    C语言实现链表
    获取两个数之间的随机数-java
    C#继承机制 多级继承
    C#继承机制 访问与隐藏基类成员
    C#继承机制 C#中的继承符合下列规则
    C#装箱与拆箱的研究
    C#箴言之用属性来访问类的私有成员
    C# 创建和初始化集合对象
    C# 常用函数和方法集汇总
    C# 多态与new关键字
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/9618178.html
Copyright © 2011-2022 走看看