• final关键字


    一、 final关键字的概述

      final关键字在java中可以用来修饰: 数据、方法、类

    二、final修饰数据

    在java中,数据可以分成三种:局部变量、实例变量、类变量。 

    局部数据:包括局部变量与方法参数(static关键字不能修饰局部变量)

    实例数据:类中的非static关键字修饰的属性 

    类变量:类中static关键字修饰的属性

    类中的数据按照类型分,可以分成:基本类型数据、引用数据。final关键字在修饰数据时,结合类型分类会比较好。

    (1)对于基本类型,final使得数值恒定不变

    private final int i=0;

    (2)对于引用类型,final使得引用的指向(此处的指向是名词)不能改变,但是引用指向(此处的指向是动词)的对象是可以改变的。

    private final Map map=new HashMap<String,String>();

    (3)无论是static类型还是非static类型的基本变量,只要被final修饰,并且在定义时赋常量值,那么中类型的对象都是编译时常量,在编译时值就确定。

    private final static int i=10;
    private final int j=10;

    (4) 不能因为某个数据被final修饰,就认为这个数据在编译时可知

    final int i=rand.nextInt(20);
    static final int j=rand.nextInt(10);

    (5) final修饰的实例数据与局部数据 允许空白,但是在第一次使用之前必须初始化。类数据不行

    三、final修饰方法

    final 修饰方法又两层 考虑:第一个是不希望方法被覆盖,但允许重载。第二个是 建议方法内联(现在的虚拟机不需要了)。所以下面只说第一个方面

    不希望方法被覆盖,但允许重载

    private方法与final方法的区别

    在子类中,可以定义与父类中的private方法签名相同的方法,因为private 方法只能被类自己访问,不能被其他类访问。

    所以根据访问位置是可以区分哪个是父类的private方法,哪个是子类的private 方法。自然是在父类中可以访问的private方法是父类的,在子类中可以访问的方法是子类的。

    所以不存在歧义。

    四、final修饰类

    final 修饰的类,表示这个类不能被继承。在final类中是否定义final域,可以根据个人意愿决定。 在final类中也可以给方法加入final关键字,但是就算给方法加入了final修饰符,也不会增加任何意义

     

  • 相关阅读:
    在IIS上启用Gzip压缩(HTTP压缩)
    跨数据库服务器查询和跨表更新
    GOOGLE高级搜索的秘籍
    NET中的规范标准注释(二) -- 创建帮助文档入门篇
    NET中的规范标准注释(一) -- XML注释标签讲解
    如何取出word文档里的图片
    System帐户!我使用你登陆
    横竖两个数字塔的效果BAT批处理怎么写?
    用批处理修改日期,然后在改回来
    根据日期计算星期几----蔡勒(Zeller)公式推导
  • 原文地址:https://www.cnblogs.com/cplinux/p/12864132.html
Copyright © 2020-2023  润新知