javaの最終キーワード構文

1つ、finalクラスとメソッド

英語の文書

原文:Java官方文档-> Finalクラスとメソッドの記述
クラスのメソッドの一部またはすべてをfinalとして宣言できます。finalメソッド宣言でキーワードを使用して、メソッドをサブクラスでオーバーライドできないことを示します。Objectクラスは、この-そのメソッドの数があるんfinal

変更してはならない実装があり、オブジェクトの一貫した状態にとって重要である場合は、メソッドをfinalにすることをお勧めします。たとえばgetFirstPlayer、このChessAlgorithmクラスメソッドをfinalにすることができます

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

コンストラクターから呼び出されるメソッドは、通常、finalとして宣言する必要があります。コンストラクターが非finalメソッドを呼び出すと、サブクラスがそのメソッドを再定義して、驚くべきまたは望ましくない結果をもたらす可能性があります。

クラス全体をfinalとして宣言することもできることに注意してください。finalと宣言されたクラスは、サブクラス化できません。これは、たとえば、Stringクラスのような不変のクラスを作成する場合に特に便利です。

総括する

クラスまたはメソッドの1つ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;
    }
    // ...
}

2、final属性/変数

Javafinal属性または変数はの変数に類似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;
	}
}

おすすめ

転載: blog.csdn.net/write_1m_lines/article/details/105231565