Java的final有许多不同的用途,意义多少有点不同。
当类声明成final时,这个类无法被继承。也就是说不能定义final类的子类。
因为final类的类无法定义子类,所以final类声明的方法也不会被覆盖(override)。
若将实例方法声明成final时,这个方法无法被子类所覆盖(override)。若将类方法声明成final时,这个方法无法被子类所隐藏(hide)。
补充说明:
实例的方法被子类的方法覆盖时,实际被调用的方法时在执行时决定的。
类方法被子类方法隐藏时,实例被调用的方法是在编译时决定的。
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参数的值则是一次都不能指定,因为方法被调用时,已经有值制定进去了。
摘自《Java多线程设计模式》
分享到:
相关推荐
Java面试题整理 Java是一种面向对象的程序设计语言,具有封装、继承、多态和抽象四大特性。下面是Java面试题整理的详细知识点: 1.1 面向对象特性 * 封装:提供了隐藏内部特性和行为的能力,保护对象内部状态,...
### Java基础知识整理之抽象类与接口的区别 #### 引言 在Java编程中,抽象类(abstract class)和接口(interface)是实现多态性的两种关键机制。它们为程序员提供了强大的面向对象编程能力,帮助更好地组织代码...
在面试中,Java开发者通常会被问及一些基础概念,包括面向对象的四大特性、关键字的区别、数据类型与类的区别、方法的重载与重写、抽象类与接口的区别,以及反射的用途和实现。下面是对这些知识点的详细解释: 1. ...
本篇文章将带您深入理解final关键字的含义、用途和好处。 final变量 final变量是指成员变量或本地变量声明为final的变量。final变量经常和static关键字一起使用,作为常量。例如: ```java public static final ...
### 最新Java面试题整理知识点概览 #### 一、Java基础篇 ##### 1.1 基础功 **1.1.1 面向对象特征** 面向对象编程(Object-Oriented Programming, OOP)是现代软件开发中最常用的设计模式之一。Java作为一种典型...
`final`关键字在JAVA中有多种用途。它可以修饰类,表示该类不可被继承;可以修饰方法,表示方法不能被重写;还可以修饰变量,表示变量一旦赋值就不能改变。 `finally`块在异常处理中用于确保某些代码无论是否发生...
本文档总结了 Java 面试的基础知识点,涵盖了面向对象、继承、多态、抽象、final、finally、finalize 的区别、整数和整数包装类的区别、重载和重写的区别、抽象类和接口的区别、反射机制的用途和实现等主题。...
43. **static用途**:用于声明静态变量、静态方法,常量,以及静态嵌套类。 44. **线程安全单例**:双重检查锁定、静态内部类、枚举单例是常见的线程安全单例模式。 45. **单例模式实现**:饿汉式(静态初始化)、...
每种数据类型都有其特定的用途和范围。 * byte:8位、有符号的整数,范围从 -128 到 127,默认值为 0。 * short:16位、有符号的整数,范围从 -32768 到 32767,默认值为 0。 * int:32位、有符号的整数,范围从 -...
finalize() 方法主要用途是回收特殊渠道申请的内存,例如 JNI(Java Native Interface)调用 non-Java 程序(C 或 C++)。 final 关键字用于限制变量、方法和类的修改和继承,finally 块用于异常处理中的清理操作,...
10. **final关键字的用途是什么?** - 声明变量时,final变量一旦赋值后就不能更改。 - 声明方法时,表示该方法不能被重写。 - 声明类时,表示该类不能被继承。 以上只是Java类面试题的一部分,实际面试中还可能...
为了确保序列化和反序列化之间的兼容性,Java 允许在类中声明一个 `private static final long serialVersionUID` 字段。如果不声明,Java 自动计算一个,但可能会因编译器或JVM版本差异导致不一致,引起序列化异常...
JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm ------------------------------------------------- 本教程由yyc,spirit整理 ------------------------------------------------- “Thinking in Java...
`final`关键字在Java中有多种用途: - 修饰变量:表示该变量一旦被赋值后就不能再改变。 - 修饰方法:表示该方法不能被子类重写。 - 修饰类:表示该类不能有子类。 #### 7. 堆栈的区别 - **堆**:动态分配的内存...
根据给定的文件信息,以下是对“2011最新整理Java练习题”中的部分关键知识点的详细解析: ### 1. Java关键字及其用途 在Java中,关键字具有特殊的含义和用途,例如: - `abstract`: 用于声明抽象类或抽象方法。...
- **面试题背景**:这三个关键字在Java中有不同的用途,理解它们的区别对于编写高质量的代码至关重要。 - **核心知识点**: - **final**:用于声明常量或方法,表示该变量不可变或方法不可重写。 - **finally**:...
文档中所包含的面试题按照知识点被分门别类地整理,涵盖了Java基础、容器、多线程、反射以及JavaWeb等多个方面。 首先来看Java基础部分,这部分内容是整个Java编程的核心,它包括但不限于JDK和JRE的区别、Java中的...