Javaのfinal修飾子のサンプルです。
目次
変数の前にfinalをつける(定数)
| final 変数の型 変数名 |
- 変数に対して再代入が不可になります。定数と呼びます。
- 定数名は、変数と区別が付くようにするため、大文字にします。
- 単語で区切りがある場合はアンダスコア(_)をつけます。
- finalは、「最後の」という意味です。
コード
変数の前にfinalをつけたサンプルです。
package test1;
public class Test1 {
private static final int PRICE = 100;
public static void main(String[] args) {
// PRICE = 200;
System.out.println(PRICE); //100
}
}
5行目は、定数です。
9行目は、定数に対して値を代入しようとしていますができません。コンパイルエラーになります。(finalフィールドに代入できません)
通常、定数はstatic修飾子も付けます。
クラスの前にfinalをつける
| final クラス名 |
- クラスの継承が不可になります
コード
クラスの前にfinalがつくサンプルです。
package test1;
final class Sample1{
}
//class Sample2 extends Sample1 {
//}
public class Test1 {
public static void main(String[] args) {
// Sample2 s2 = new Sample2();
}
}
3行目は、クラスの前にfinalがついています。
6行目は、Sample1クラスを継承しようとしますが、継承できません。コンパイルエラーになります。(finalクラスをサブクラス化できません)
メソッドの前にfinalをつける
| final 戻り値の型 メソッド名() |
- オーバーライドが不可になります。
コード
メソッドの前にfinalがつくサンプルです。
package test1;
class Sample1{
final void print() {
}
}
class Sample2 extends Sample1 {
//public void print() {
//}
}
public class Test1 {
public static void main(String[] args) {
Sample2 s2 = new Sample2();
}
}
4行目は、メソッドの前にfinalがついています。
9行目は、printメソッドをオーバーライドしようとしますが、オーバーライドできません。コンパイルエラーになります。(finalメソッドをオーバーライドできません)
関連の記事
Java staticメソッドとstatic変数のサンプル
Java static初期化ブロックと初期化ブロックのサンプル
Java staticインポートのサンプル