[1] クラス
* クラスの継承できないようにする
サンプル
final class SampleClass {
}
public class SubSampleClass extends SampleClass {
// コンパイルエラー
}
[2] メソッド
* クラスのオーバーライドができないようにする
サンプル
public class SampleClass {
public final void setXxx() {
}
}
public class SubSampleClass extends SampleClass {
public void setXxx() {
// コンパイルエラー
}
public void setXxx(int xxx) {
// OK
}
}
[3] 変数
基本型変数
* 変数の変更できないようにする
* 「final static」で定数になる(★重要★)
参照変数
* 変数をnewして再変更ができないようにする
サンプル
例1:定数
public class SampleClass {
// 定数(★重要★)
public final static int MaxNumber = 100;
}
例2:コンパイルエラー
public class SampleClass {
final public String str1 = "test"; // final
final public String str2; // !!NG!!
public String str4 = "test";
public void sample1() {
final String str3 = "test"; // final
str1 = "TEST"; // !!NG!!
str3 = "TEST"; // !!NG!!
}
public void sample2() {
final SampleClass sample = new SampleClass();
sample = null; // !!NG!!
sample = new SampleClass(); // !!NG!!
sample.str4 = "sample"; // OK
sample.setStr4(sample.getStr4()); // OK
}
public void setStr4(String str4) {
this.str4 = str4;
}
public String getStr4() {
return this.str4;
}
public void copy(final String src, String dst) {
src = dst; // !!NG!!
src = "ABC"; // !!NG!!
}
}