はじめに:
前回の記事で、我々は今、我々は最終的キーワードについて話を一緒に働く、staticキーワードの役割を説明しました。
まず、最後のキーワードは、我々は3つの文章を提案しています:
- 変更され、最終的な変数を変更することはできません
- 修飾された最終的な方法は、オーバーライドできません
- 変更され、最終的なクラスは継承できません
「Javaプログラミングのアイデア」で、言葉がありますが、「これを変更することはできません。」:ここでは、我々は最終的に3例の使用について議論データ、メソッドやクラスを。
図1に示すように、最終的なデータ:
1)コンパイル時定数が変化しないこと。Javaでは、これらの定数は、基本データ型であること、およびキーワード決勝を表している必要があります。彼らは、宣言またはコンストラクタで初期化されている場合、最終的なメンバ変数は、それ以外の場合は、コンパイルエラーを報告し、初期化する必要があります。
package com.hlk;
import java.util.Random;
class Value {
int i;
public Value(int i) {
this.i = i;
}
}
public class Final_Test {
private static Random random = new Random(100);
private String id;
public Final_Test() {
}
public Final_Test(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
private final int valueOne = 10;
private static final int valueTwo = 10;
public static final int valueThree = 30;
private final int i4 = random.nextInt(20);
static final int i5 = random.nextInt(30);
private Value v1 = new Value(11);
private final Value v2 = new Value(22);
private static final Value v3 = new Value(33);
//Arrays:
private final int[] a = {1,2,3,4,5,6};
@Override
public String toString() {
return "i4 = " + i4 + ",i5 = " + i5;
}
public static void main(String[] args) {
Final_Test f1 = new Final_Test();
//f1.valueOne++; 报错,因为final定义的数据不可改变
f1.v2.i++;
f1.v3.i++;
System.out.println(f1);
System.out.println("f1.v2.i: " + f1.v2.i);
System.out.println("f1.v3.i: " + f1.v3.i);
/**
* 引用的内容可以改变,但是引用不可以被改变
*/
final Final_Test id1 = new Final_Test("id1");
final Final_Test id2 = new Final_Test("id2");
id1.setId("change_id1");
System.out.println(id1.getId());//id1被改变
//id1 = id2;//报错The final local variable id1 cannot be assigned.
}
}
基本データ型は、最終メイク定数値の、およびオブジェクト参照、最終的なメーク定数参照用。参照がオブジェクトを指すように初期化されたら、その後、別のオブジェクトを指すように変更することはできません。
焦点:
ここでは、ここで変更することはできません変更され、最終的な変数の質問をするか、何を変更することはできないのですか?変数の内容?または参照変数?
A:上記によれば、我々が見ることができる最終的な修飾は引用は、参照コンテンツをポイントを変更することができるためにポイントの代わりに不変変数の参照です。
図2に示すように、最終的な方法:
最終の方法親クラスはサブクラスを書き換えていない、それは正確に同じ方法ではない、すなわちサブクラスとスーパークラスが存在することができます。
3、最後のカテゴリ:
開発では、セキュリティ上の理由やその他の理由のために、私たちは、クラスはそれが最終的に飾られ、継承されている必要はありません。