• java中final关键字


    一、final关键字的含义

    final是Java中的一个保留关键字,它可以标记在成员变量、方法、类以及本地变量上。一旦我们将某个对象声明为了final的,那么我们将不能再改变这个对象的引用了。如果我们尝试将被修饰为final的对象重新赋值,编译器就会报错。

    二、用法

    1.修饰变量

    final修饰在成员变量或者局部变量上,那么我们可以称这个变量是final变量,如果我们将被final修饰的变量重新赋值,编译器就会报错

    2.修饰方法

    被final所修饰的方法将无法被子类重写。

    使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。” -- 摘自《Java编程思想》

    因此如果你认为一个方法的功能已经足够完整了,子类中不需要改变的话,你可以声明此方法为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定(正如编程思想中所提到的,在现在几版较新的JDK中,已经几乎没有性能差别了)。

    3.修饰类

    如果某个类被final所修饰,那么表明这个的功能通常是完整的;该类将不能被继承。并且final类的所有方法都会被隐式的修饰成final。

    4.ps:匿名类中的所有变量都必须是final的。

    static修饰的方法:
    1、父类中的静态方法可以被继承、但不能被子类重写。
    2、如果在子类中写一个和父类中一样的静态方法,那么该静态方法由该子类特有,两者不构成重写关系。
    final修饰:
    1、修饰类表示不允许被继承。
    2、修饰方法表示不允许被子类重写,但是可以被子类继承,不能修饰构造方法。
    3、修饰变量表示不允许被修改
        a)方法内部的局部变量,使用前被赋值即可(只能赋值一次),没有必要非得初始化。
        b)类中的成员变量(如果没有在定义时候初始化,那么只能在构造代码块中或者构造方法中赋值)
        c)基本数据类型的变量(初始化赋值之后不能更改)
        d)引用数据类型的变量(初始化之后不能再指向另外一个对象,但对象的内容是可以变的)
  • 相关阅读:
    Spine(2D骨骼动画)
    UpdatePanel的用法
    Windows7下的免费虚拟机(微软官方虚拟机)
    android ViewPager具体解释
    与Scheme共舞
    Binder机制1---Binder原理介绍
    HDU 2853 Assignment(KM最大匹配好题)
    微信公众平台java开发具体解释(project代码+解析)
    怎样绕过oracle listener 监听的password设置
    IOS成长之路-Nsstring中搜索方法rangeOfString
  • 原文地址:https://www.cnblogs.com/girl1314/p/11455755.html
Copyright © 2020-2023  润新知