java关键字final用法详解
final关键字在java中也是属于比较常用的一种,因此也算得上是一个比较重要的关键字,有必要对它进行深入的学习。
一、定义:用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义变量。(源自百度百科)
二、作用:final关键字有着诸多用处,归纳总结起来,大概有一下几点:修饰类,修饰方法,修饰变量和修饰参数。
1.修饰类:final修饰的类,拥有着不能被继承的特性,因为其所有的成员和方法都是默认final的,所以也不可以被覆盖,因此用的比较少,需要慎重考虑。
public final class Person {
public static void main(String[] args) {
System.out.println("这是一个final类");
}
}
2.修饰方法:用final来修饰方法,表明该方法不能被覆盖,这样做的考虑原因主要是防止任何继承类修改它的含义。
关于private和final关键字有那么一点联系,类中的所有private方法都隐式的指定为final,由于无法在类外使用private方法,所以也就无法覆盖它。
public class Person {
//普通方法
public void Demo1(){
System.out.println("这是一个普通方法");
}
//final方法
public final void Demo2(){
System.out.println("这是一个final方法");
}
} class Student extends Person{
//重写父类方法
public void Demo1(){
System.out.println("重写的方法");
}
}
3.修饰变量:用final修饰的基本数据类型变量,其数值一经初始化就不允许修改,这就是我们通常所说的常量。用final修饰引用数据时,则其初始化后就不能修改引用指向另一个对象。
class Test{
public int a;
public Test(int a){
this.a = a;
}
} public class Person {
//一经初始化值不可改变
private final int A = 1;
//在构造函数中初始化
public final int B;
public Person(int X){
B = X;
}
//final修饰的引用数据
public final Test C = new Test(1);
}
4.修饰参数:我们在编写方法的时候,可以在基本数据类型参数前面加上final来修饰,它表示在整个方法中,这个参数的值是不能被改变的。在引用数据类型参数前面加上final来修饰,则表明该参数的引用不可被改变,但值可以改变。
public class Person {
public static void main(String[] args) {
Person person = new Person();
person.Demo(2);
} public void Demo(final int i){
//i = 3; final修饰的参数不可改变
System.out.println(i);
}
}
总结:final关键字属于较为常用的关键字之一,所以需要更深层次的了解学习,我这里列的几个作用都是我从网上别人那看到的,所以如果还有一些别的文中没有列出的方法,也希望各位大神多多指点。
java关键字final用法详解的更多相关文章
- java关键字volatile用法详解
volatile关键字想必大家都不陌生,在java 5之前有着挺大的争议,在java 5之后才逐渐被大家接受,同时作为java的关键字之一,其作用自然是不可小觑的,要知道它是java.util.con ...
- java关键字tranisent用法详解
作为java中的一个关键字,tranisent用的并不是很多,但是在某些关键场合,却又起着极为重要的作用,因此有必要对它进行一些必要的了解. 一.定义:声明不用序列化的成员域.(源自百度百科) 二.作 ...
- java关键字static用法详解
java中有53个关键字,其中包含2个保留字,这篇文章主要介绍一下static这个关键字. static在java中算是一个比较常见的关键字,有着多种用法,因此很有必要好好地了解一番. 一.定义 st ...
- Java关键字总结及详解
Java关键字是Java的保留字,这些保留字不能用来作为常量.变量.类名.方法名及其他一切标识符的名称. 一.基本数据类型 Java中有八种基本数据类型,六种数字类型(四个整数型.六中浮点型),一种字 ...
- 【转】Java enum的用法详解
用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. p ...
- Java enum的用法详解[转]
Ref:http://www.cnblogs.com/happyPawpaw/archive/2013/04/09/3009553.html 用法一:常量 在JDK1.5 之前,我们定义常量都是: p ...
- 多线程java的concurrent用法详解(转载)
我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便.而当针对高质量Java ...
- Java enum的用法详解
(转自:http://www.cnblogs.com/happyPawpaw/archive/2013/04/09/3009553.html) 用法一:常量 在JDK1.5 之前,我们定义常量都是: ...
- java的concurrent用法详解
我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便.而当针对高质量Java ...
随机推荐
- Django模板之自定义过滤器/标签/组件
自定义步骤: 1. 在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 2. 在app应用中创建templatet ...
- Jquery获取select option动态添加自定义属性值失效
Jquery获取select option动态添加自定义属性值失效 2014/12/31 11:49:19 中国学网转载 编辑:李强 http://www.xue163.com/588880/3909 ...
- 可修改的区间第K大 BZOJ1901 ZOJ2112
http://blog.csdn.net/u014492306/article/details/47981315 //变相离线做法 离散化缩小区间范围,做两大个线段树,第一个就是普通的持久化树,有个前 ...
- BZOJ1010单调性DP优化
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 10707 Solved: 4445[Submit][S ...
- Spring全家桶——SpringBoot之AOP详解
Spring全家桶--SpringBoot之AOP详解 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关键单元是类,而在AOP中,模块化单元是方 ...
- Spring Boot 开发集成 WebSocket,实现私有即时通信系统
1/ 概述 利用Spring Boot作为基础框架,Spring Security作为安全框架,WebSocket作为通信框架,实现点对点聊天和群聊天. 2/ 所需依赖 Spring Boot 版本 ...
- OpenStack知识点详解
一:云计算 一.起源 1. 云计算这个概念首次在2006年8月的搜索引擎会议上提出,成为了继互联网.计算机后信息时代的又一种革新(互联网第三次革命). 2. 云计算的核心是将资源协调在一起,使 ...
- 使用net Manager工具远程连接Oracle配置监听
一.在服务端配置Oracle端口 win + R 输入netca 弹出如下窗口后 选择监听程序配置,点击下一步: 二.配置端口号后使用Telnet工具调试端口是否连通 在命令行输入telnet 服务器 ...
- 附件1:setTimeout与闭包
我在详细图解作用域链与闭包一文中的结尾留下了一个关于setTimeout与循环闭包的思考题. 利用闭包,修改下面的代码,让循环输出的结果依次为1, 2, 3, 4, 5 for (var i=1; i ...
- [代码片段-C#]工具代码片段 及 版本信息等
标题: [SD.TEAM]XXXX 公司: 宝宝巴士(福建)网络科技有限公司 商标: 宝宝巴士 版权: © Babybus SD.Team 版权+作者(简): © Babybus SD.Team - ...