美文网首页
2020-09-11 Java Final关键字(为下一篇内部类

2020-09-11 Java Final关键字(为下一篇内部类

作者: flynnny | 来源:发表于2020-09-12 00:17 被阅读0次

    四种用法:
    1.可以用来修饰一个类

    public final class 类名称{
      //方法体...
    }
    

    含义:这个类不能有任何子类
    注意:一个final类,其中所有成员方法都不能进行覆盖重写(没儿子)
    2.可以用来修饰一个方法

    修饰符 final 返回值类型 方法名称(参数列表){
      //方法体...
    }
    

    注意:当final修饰一个方法,此方法不能进行覆盖重写;所以对于类和方法来说,abstract和final不能同时使用,因为矛盾。
    3.可以用来修饰一个局部变量
    注意:当final修饰一个局部变量(只保证唯一一次赋值),那么这个局部变量就不能进行更改。
    对于基本类型来说,不可变说的是变量中的数据不可改变
    对于引用类型来说,不可变说的是变量中的地址值不可改变,但里面的内容可以改变。

    final1.png
    4.可以用来修饰一个成员变量
    注意:当final修饰一个成员变量,那么这个成员变量也不能进行更改。
    与局部变量区别:
    1、由于成员变量有默认值,所以用了final后必须手动赋值(报提示),不给默认值了;
    2、当final修饰一个成员变量,要么直接赋值,要么通过构造方法赋值(二者选其一)。必须保证所有重载的构造方法对其都有赋值。

    成员变量和局部变量的区别

    1.从语法形式上,看成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public,private,static等修饰符所修饰,而局部变量不能被访问控制修饰符及static所修饰;但是,成员变量和局部变量都能被final所修饰;
    2.从变量在内存中的存储方式来看,成员变量是对象的一部分,而对象存在于堆内存,局部变量存在于栈内存
    3.从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而自动消失。
    4.成员变量如果没有被赋初值,则会自动以类型的默认值而赋值(一种情况例外被final修饰但没有被static修饰的成员变量必须显示地赋值);而局部变量则不会自动赋值。

    相关文章

      网友评论

          本文标题:2020-09-11 Java Final关键字(为下一篇内部类

          本文链接:https://www.haomeiwen.com/subject/bgriektx.html