final关键字可用于修饰类、方法和变量,final修饰的类不能被继承;final修饰的方法不可被重写;final修饰的变量不可被改变。

1. final类

final修饰的类不能被继承意思是final修饰的类不可以有子类,java.lang.Math类就是一个final类,它不可以有子类。

定义一个final类的好处是:可以防止其它类改变该类的方法和实现细节,防止一些不安全因素的产生。

下面定义了一个简单的final类:

public final class FinalClass { }

//下面的类继承将会出现编译错误

class Sub extends FinalClass { }

2. final方法

final修饰的方法不可被重写,如果不希望子类重写父类的某个方法,则可以使用final修饰词方法。Object类里的getClass()方法就是final修饰的,该方法不可被重写。

下面的程序试图重写final方法,将会引发编译错误:

public class FinalMethod {

  public final void say () { }

}

class Sub extends FinalMethod {

  //下面方法将会出现编译错误

  public void say () { }

}

注:final修饰的方法只是不能被重写,但可以被重载!

3. final成员变量

final修饰的变量不可被改变,意思是不能被重新赋值。由于final修饰的成员变量不能重新赋值,所以Java语规定:final修饰的成员变量必须由程序员显示的指定初始值。

final修饰的类变量和实例变量指定初始值得地方如下:

1)类变量:必须在静态初始化块中指定初始值或声明该类变量时指定初始值,而且只能二选一指定。

2)实例变量:必须在非静态初始化块、声明该实例变量或构造器中指定初始值,而且只能三选一指定。

final修饰基本类型变量和引用类型变量的区别:

当final修饰基本类型变量时,改基本类型变量不能被改变。但对于引用类型变量而言,它保存的仅仅只是引用,final只保证这个引用类型变量所引用的地址不会改变,

即一直引用同一个对象,但这个对象完全可以发生改变。

简述Java中的final关键字的更多相关文章

  1. 浅析Java中的final关键字(转载)

    自http://www.cnblogs.com/dolphin0520/p/3736238.html转载 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括 ...

  2. 关于Java中的final关键字

    Java中的final关键字是用来限制用户行为的,说白了,就是用来限制我们这些程序员的.final可以用来修饰:变量.方法.类. 1)Java final variable final用来修饰变量时, ...

  3. 深入理解Java中的final关键字

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...

  4. 浅析Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  5. (转)深入理解Java中的final关键字

    转自:http://www.importnew.com/7553.html Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方 ...

  6. [转载]浅析Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  7. 转载:浅析Java中的final关键字

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下 ...

  8. java中的final关键字

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下 ...

  9. 浅析Java中的final关键字(转)

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下 ...

随机推荐

  1. Flask入门之上传文件到服务器

    今天要做一个简单的页面,可以实现将文件 上传到服务器(保存在指定文件夹) #Sample.py # coding:utf-8 from flask import Flask,render_templa ...

  2. 团队项目第二阶段个人进展——Day4

    一.昨天工作总结 冲刺第四天,分析完成后端处理的数据有主题,时间,地点,照片信息,前几个都是字符串类型,后一个是照片格式 二.遇到的问题 照片格式数据不知道怎么处理 三.今日工作规划 学习后端小程序后 ...

  3. JS 数据类型、赋值、深拷贝和浅拷贝

    js 数据类型 六种 基本数据类型: Boolean. 布尔值,true 和 false. null. 一个表明 null 值的特殊关键字. JavaScript 是大小写敏感的,因此 null 与 ...

  4. PAT1127:ZigZagging on a Tree

    1127. ZigZagging on a Tree (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...

  5. PAT1130:Infix Expression

    1130. Infix Expression (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Give ...

  6. 16个必须熟悉的linux服务器监控命令

    本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc. == 原文:16 Linux Server Monitoring Comman ...

  7. 基于Jmeter+maven+Jenkins构建性能自动化测试平台

      一.目的: 为能够将相关系统性能测试做为常规化测试任务执行,且可自动无人值守定时执行并输出性能测试结果报告及统计数据,因此基于Jmeter+maven+Jenkins构建了一套性能自动化测试平台 ...

  8. jQuery中 $.ajax()方法详解

    $.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Strin ...

  9. Android 打造任意层级树形控件 考验你的数据结构和设计

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40212367,本文出自:[张鸿洋的博客] 1.概述 大家在项目中或多或少的可能会 ...

  10. 【链表】Bzoj1098[POI2007]办公楼biu

    Description FGD开办了一家电话公司.他雇用了N个职员,给了每个职员一部手机.每个职员的手机里都存储有一些同事的电话号码.由于FGD的公司规模不断扩大,旧的办公楼已经显得十分狭窄,FGD决 ...