`
yunnick
  • 浏览: 392252 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java的final用途整理

阅读更多

Java的final有许多不同的用途,意义多少有点不同。

  • final类

当类声明成final时,这个类无法被继承。也就是说不能定义final类的子类。

因为final类的类无法定义子类,所以final类声明的方法也不会被覆盖(override)。

  • final方法

若将实例方法声明成final时,这个方法无法被子类所覆盖(override)。若将类方法声明成final时,这个方法无法被子类所隐藏(hide)。

补充说明:

实例的方法被子类的方法覆盖时,实际被调用的方法时在执行时决定的。

类方法被子类方法隐藏时,实例被调用的方法是在编译时决定的。

  • final字段

final的字段值自能制定一次。

要将值指定给final变量字段,有下面两种方法:

第一种是在声明字段时就直接赋初始值

class Someting{
	final int value = 123
}

另外一种则是在构造器中将值赋给字段(blank final)。

class Something{
	final int value;
	Something(){
		this.value = 123;
	}
}

要将值赋给final实例的字段,有下面两种方法:

第一种是在声明字段时就直接赋初始值。

class Someting{
	static final int value = 123;
}

另一种则是在static块(静态初始化子)中将值赋给字段(blank final)。

class Something{
	static final int value;
	static {
		value = 123;
	}
}

 final字段无法使用setValue类的seter方法再次赋其他值。

  • final变量与final参数

局部变量与方法的参数,都可以声明成final。final的变量的值只能指定一次。

final参数的值则是一次都不能指定,因为方法被调用时,已经有值制定进去了。
                                                                                            

                                                                                                      摘自《Java多线程设计模式》

分享到:
评论

相关推荐

    2022年最新Java面试题整理.doc

    Java面试题整理 Java是一种面向对象的程序设计语言,具有封装、继承、多态和抽象四大特性。下面是Java面试题整理的详细知识点: 1.1 面向对象特性 * 封装:提供了隐藏内部特性和行为的能力,保护对象内部状态,...

    Java基础知识整理

    ### Java基础知识整理之抽象类与接口的区别 #### 引言 在Java编程中,抽象类(abstract class)和接口(interface)是实现多态性的两种关键机制。它们为程序员提供了强大的面向对象编程能力,帮助更好地组织代码...

    2018最新Java面试题整理.doc

    在面试中,Java开发者通常会被问及一些基础概念,包括面向对象的四大特性、关键字的区别、数据类型与类的区别、方法的重载与重写、抽象类与接口的区别,以及反射的用途和实现。下面是对这些知识点的详细解释: 1. ...

    深入理解Java中的final关键字_动力节点Java学院整理

    本篇文章将带您深入理解final关键字的含义、用途和好处。 final变量 final变量是指成员变量或本地变量声明为final的变量。final变量经常和static关键字一起使用,作为常量。例如: ```java public static final ...

    最新Java面试题整理.doc

    ### 最新Java面试题整理知识点概览 #### 一、Java基础篇 ##### 1.1 基础功 **1.1.1 面向对象特征** 面向对象编程(Object-Oriented Programming, OOP)是现代软件开发中最常用的设计模式之一。Java作为一种典型...

    JAVA题库-JAVA面试题目整理.doc

    `final`关键字在JAVA中有多种用途。它可以修饰类,表示该类不可被继承;可以修饰方法,表示方法不能被重写;还可以修饰变量,表示变量一旦赋值就不能改变。 `finally`块在异常处理中用于确保某些代码无论是否发生...

    2018年度最新Java面试题整理.pdf

    本文档总结了 Java 面试的基础知识点,涵盖了面向对象、继承、多态、抽象、final、finally、finalize 的区别、整数和整数包装类的区别、重载和重写的区别、抽象类和接口的区别、反射机制的用途和实现等主题。...

    Java面试题整理(2022年).docx

    43. **static用途**:用于声明静态变量、静态方法,常量,以及静态嵌套类。 44. **线程安全单例**:双重检查锁定、静态内部类、枚举单例是常见的线程安全单例模式。 45. **单例模式实现**:饿汉式(静态初始化)、...

    全网最全Java基础错题整理(持续更新)

    每种数据类型都有其特定的用途和范围。 * byte:8位、有符号的整数,范围从 -128 到 127,默认值为 0。 * short:16位、有符号的整数,范围从 -32768 到 32767,默认值为 0。 * int:32位、有符号的整数,范围从 -...

    Java中final,finally,finalize三个关键字的区别_动力节点Java学院整理

    finalize() 方法主要用途是回收特殊渠道申请的内存,例如 JNI(Java Native Interface)调用 non-Java 程序(C 或 C++)。 final 关键字用于限制变量、方法和类的修改和继承,finally 块用于异常处理中的清理操作,...

    java类面试题整理

    10. **final关键字的用途是什么?** - 声明变量时,final变量一旦赋值后就不能更改。 - 声明方法时,表示该方法不能被重写。 - 声明类时,表示该类不能被继承。 以上只是Java类面试题的一部分,实际面试中还可能...

    java面试知识点整理.docx

    为了确保序列化和反序列化之间的兼容性,Java 允许在类中声明一个 `private static final long serialVersionUID` 字段。如果不声明,Java 自动计算一个,但可能会因编译器或JVM版本差异导致不一致,引起序列化异常...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm ------------------------------------------------- 本教程由yyc,spirit整理 ------------------------------------------------- “Thinking in Java...

    JAVA面试题集-整理

    `final`关键字在Java中有多种用途: - 修饰变量:表示该变量一旦被赋值后就不能再改变。 - 修饰方法:表示该方法不能被子类重写。 - 修饰类:表示该类不能有子类。 #### 7. 堆栈的区别 - **堆**:动态分配的内存...

    2011最新整理Java练习题

    根据给定的文件信息,以下是对“2011最新整理Java练习题”中的部分关键知识点的详细解析: ### 1. Java关键字及其用途 在Java中,关键字具有特殊的含义和用途,例如: - `abstract`: 用于声明抽象类或抽象方法。...

    java笔试面试题汇总 基础版 最新 最全

    - **面试题背景**:这三个关键字在Java中有不同的用途,理解它们的区别对于编写高质量的代码至关重要。 - **核心知识点**: - **final**:用于声明常量或方法,表示该变量不可变或方法不可重写。 - **finally**:...

    Java 最常见 200+ 面试题全解析:面试必备.pdf

    文档中所包含的面试题按照知识点被分门别类地整理,涵盖了Java基础、容器、多线程、反射以及JavaWeb等多个方面。 首先来看Java基础部分,这部分内容是整个Java编程的核心,它包括但不限于JDK和JRE的区别、Java中的...

Global site tag (gtag.js) - Google Analytics