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 ...
随机推荐
- 前端面试题-WebSocket的实现和应用
(1)什么是WebSocket? WebSocket是HTML5中的协议,支持持久连续,http协议不支持持久性连接.Http1.0和HTTP1.1都不支持持久性的链接,HTTP1.1中的keep-a ...
- 【转载】皇 家 国 际 开 户图像的插值算法18O88O49999
插值的定义: 设函数y=f(x)在区间[a,b]上有定义,且已知在点a≤x0<x1<…<xn≤b上的值为y0,y1,…,yn,若存在简单函数P(x)使得 P(xi)=yi (i=0, ...
- (mysql)数据库笔记
一.数据库的特点: a.实现数据共享 b.采用特定的数据类型. c.具有较高的数据独立性 d.具有统一的数据控制功能. 二.mysql的优势: a.速度:运行速度快 b.价格:mysql对多数个人来 ...
- ql的python学习之路-day12
前言:这一节主要学习json和pickle 背景: 相信大家在日常生活中都有接触大型的网络游戏,打游戏的时候都是自己在电脑上操作,自己刷怪升级:当然也会碰到中午去吃饭然后挂机的情况,让电脑自动的刷怪, ...
- vue上的简单轮播图
好久没写轮播图了,今天在vue上写了个超简单的,效果还ok. .moveLeft{position:relative;right:ZOOMpx;transition:all 1s;} 原理是滚动时利用 ...
- 8086 8253 proteus仿真实验
目录 实验内容 电路图 计数初值 关于8523的地址 关于灯的地址 代码内容 实验内容 电路图 计数初值 已知\(f_{clk0}=100khz\),所以\(T_{clk0}=\frac{1}{f_{ ...
- ABAP基础3:OPENSQL
select result from source where condition group by fileds having condition order by fields into targ ...
- MySQL索引及优化(3)设计数据库
一.范式和反范式 优秀的库表设计是高性能数据库的基础.如何才能设计出高性能的库表结构呢?这里必须要提到数据库范式.范式是基础规范,反范式是针对性设计. 1.1.范式 范式是设计数据库结构过程中所要遵循 ...
- 如何利用BeautifulSoup选择器抓取京东网商品信息
昨天小编利用Python正则表达式爬取了京东网商品信息,看过代码的小伙伴们基本上都坐不住了,辣么多的规则和辣么长的代码,悲伤辣么大,实在是受不鸟了.不过小伙伴们不用担心,今天小编利用美丽的汤来为大家演 ...
- 加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04)
加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04) 前言 加密通信软件Signal是开源的,安全性很高,号称斯诺登也推荐大家使用.既然这么好,那必然会有不少人去尝试复制 ...