修飾子の実験Advertisementクラス修飾子 final
final修飾子がついているクラスは派生禁止。extendsすることができない。
コンパイル時にエラーとして警告される。
public class FinalTest{
public static void main(String args[]){
Sub s1 = new Sub();
s1.resultOutput();
}
}
class Sub extends Base{
public void resultOutput(){ //オーバーライド
System.out.println(num1 - num2);
}
}
final class Base{ //final
int num1 = 10;
int num2 = 20;
public void resultOutput(){
System.out.println(num1 + num2);
}
}
コンパイルの結果
finalTest.java:8: final Base からは継承できません。
class Sum extends Base{
^
エラー 1 個
メソッド修飾子 final
メソッドにfinal修飾子をつけるとオーバーライドが禁止される。
public class FinalTest{
public static void main(String args[]){
Sub s1 = new Sub();
s1.resultOutput();
}
}
class Sub extends Base{
public void resultOutput(){ //オーバーライド
System.out.println(num1 - num2);
}
}
class Base{
int num1 = 10;
int num2 = 20;
final public void resultOutput(){ //final
System.out.println(num1 + num2);
}
}
コンパイルの結果
finalTest.java:9: Sub の resultOutput() は Base の
resultOutput() をオーバーライドできません。;
オーバーライドされたメソッドは final です。
public void resultOutput(){
^
エラー 1 個
変数の修飾子 final
変数にfinalをつけると定数となり、値の変更が不可能となる。
public class FinalTest{
public static void main(String args[]){
Base b1 = new Base();
b1.resultOutput();
}
}
class Base{
final int num1 = 10; //final
int num2 = 20;
public void resultOutput(){
num1++; //num1をインクリメント
System.out.println(num1 + num2);
}
}
結果
finalTest.java:13: final 変数 num1 に値を代入することはできません。
num1++; //num1をインクリメント
^
エラー 1 個
まとめ
finalは、何を修飾するかによって意味が異なる。
Advertisement |
ショートカット・634・634ブログ ・このカテゴリのトップページに戻る ・Incubator(Pukiwiki) ・634ラボ UIコレクションギャラリー ZO-3ジェネレーター サイト検索Y!ログール |