首页 > 编程语言 >java final关键字语法

java final关键字语法

时间:2024-09-08 20:50:33浏览次数:12  
标签:java int class final 关键字 static method public

一、final类和方法

英文文档

原文:Java官方文档 -> Writing Final Classes and Methods
You can declare some or all of a class's methods final. You use the final keyword in a method declaration to indicate that the method cannot be overridden by subclasses. The Object class does this—a number of its methods are final.

You might wish to make a method final if it has an implementation that should not be changed and it is critical to the consistent state of the object. For example, you might want to make the getFirstPlayer method in this ChessAlgorithm class final:

class ChessAlgorithm {
    enum ChessPlayer { WHITE, BLACK }
    ...
    final ChessPlayer getFirstPlayer() {
        return ChessPlayer.WHITE;
    }
    ...
}

Methods called from constructors should generally be declared final. If a constructor calls a non-final method, a subclass may redefine that method with surprising or undesirable results.

Note that you can also declare an entire class final. A class that is declared final cannot be subclassed. This is particularly useful, for example, when creating an immutable class like the String class.

总结

一个finalJava类或方法不能被继承。

例子

类(Integer源代码):

package java.lang;

import java.lang.annotation.Native;
// import ...
import static java.lang.String.UTF16;

public final class Integer extends Number // Final类不能被继承,但是可以extend或implement别的非final类
        implements Comparable<Integer>, Constable, ConstantDesc {
    @Native public static final int   MIN_VALUE = 0x80000000;
    @Native public static final int   MAX_VALUE = 0x7fffffff;
    @SuppressWarnings("unchecked")
    public static final Class<Integer>  TYPE = (Class<Integer>) Class.getPrimitiveClass("int");
	// 此处省略n行
    /** use serialVersionUID from JDK 1.0.2 for interoperability */
    @Native private static final long serialVersionUID = 1360826667806852920L;
}

方法:

class ChessAlgorithm {
    enum ChessPlayer { WHITE, BLACK }
    // ...
    final ChessPlayer getFirstPlayer() { // 不能被继承,但是可以被调用
        return ChessPlayer.WHITE;
    }
    // ...
}

二、final属性/变量

Java中的final属性或变量类似于C/C++中的const变量,不能改变。
例子:

public class Information {
	private static final int WIDTH = 170, HEIGHT = 135; // final属性,可以为private
	public static final int SIZE = WIDTH * HEIGHT; // 也可以为public

	public int getDifference() {
		final int difference = WIDTH - HEIGHT; // 函数中的final变量
		return difference;
	}
}

标签:java,int,class,final,关键字,static,method,public
From: https://www.cnblogs.com/stanleys/p/18403422/java-final-syntax

相关文章

  • java.lang.IllegalArgumentException: input == null! 解决方法
    最近在编一个Java游戏,处理图片时遇到如下问题:完整错误信息Exceptioninthread"AWT-EventQueue-0"java.lang.IllegalArgumentException:input==null! atjava.desktop/javax.imageio.ImageIO.read(ImageIO.java:1356) atImageIOTest.main.<init>(main.java:23)代码片......
  • Java中的整数移位运算符
    对于<<,>>两种运算符,可以这样说:\(a<<b=a*2^b\)\(a>>b=a/2^b\)但是对于>>>...不好说了。这些位运算在计算机中怎样运算的?大家都知道,整数在计算机中是以二进制存储的:\(0=(0)_2\)\(4=(100)_2\)\(8=(1000)_2\)\(20=(10100)_2\)\(666=(1010011010)_2\)左移(<<......
  • 1-5java运算符
    Java运算符计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,java也提供了一套的运算符来操纵变量。我们可以把运算符分成以下几组:算术运算符关系运算符位运算符逻辑运算符赋值运算符其他运算符算术运算符算术运算符用在数学表达式中,它们的作用和数学中的作......
  • 1-6Java条件语句
    Java条件语句if语句一个if语句包含一个布尔表达式和一条或多条语句。语法if语句的语法如下:`if``(布尔表达式){````//如果布尔表达式为true将执行的语句``}`如果布尔表达式的值为true,则执行if语句中的代码块,否则执行if语句块后面的代码。实例`public``class`......
  • [Java基础]IO的同步和阻塞
    同步与异步什么是同步与异步呢?百度百科是这样定义的:同步指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系。异步与同步相对(这解释让我无言相对)所以,我们需要明确的是同步与异步针对的是两个或者两个以上的事物。对于同步而言,一个任务(调用者)的完成需要依赖另一个......
  • Java 21的Concurrency的笔记
    JavaCoreLibrariesConcurrencyConcurrencyAPI包括:VirtualthreadsStructuredconcurrencyTaskschedulingframework即线程池,常见、易用。Fork/joinframework即ForkJoinPool,不过目前还没有在项目中实际使用过。Concurrentcollections线程安全的容器,比如......
  • Java并发编程实战 07 | 如何正确停止线程
    什么时候需要停止一个线程?一个线程被创建并启动之后,大部分情况下都会自然运行至结束,但是也有一些情况需要主动停止线程,比如:用户主动取消执行:用户可能会中止一个正在进行的操作,这时需要停止相关线程。运行时错误或超时:线程可能因为运行时错误或超时而需要被停止,以避免长时......
  • Java并发编程实战 08 | 彻底理解Shutdown Hook
    钩子线程(HookThread)简介在一个Java应用程序即将退出时(比如通过正常执行完成或通过用户关闭应用程序),通常需要进行一些清理操作,例如:释放资源(如文件句柄、网络连接)。关闭数据库连接。保存未完成的数据或状态。我们可以通过钩子线程实现这一点,钩子线程是指在程序结束时,JVM......
  • 【JavaScript】LeetCode:16-20
    文章目录16无重复字符的最长字串17找到字符串中所有字母异位词18和为K的子数组19滑动窗口最大值20最小覆盖字串16无重复字符的最长字串滑动窗口+哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新......
  • JAVA代理-----详细深入介绍
    什么是代理(定义)定义:给目标对象提供一个代理对象,并且由代理对象控制对目标对象的引用为什么要使用JAVA代理(目的)1.功能增强:通过代理业务对原有业务进行增强2.控制访问通过代理对象的方式间接的范文目标对象,防止直接访问目标对象给系统带来不必要的复杂性。例:银行转账的系统......