@634

修飾子の実験

Advertisement

abstract


規則1:abstractのメソッド(抽象メソッド)、もしくは変数(定数)がひとつでも定義されているクラスではクラス定義にabstractを指定(抽象クラス)しなくてはならない。
実験。
public class AbTest{
    public static void main(String args[]){
        Test ts = new Test();

        //func()メソッドを実装しないでみる。
    }
}

class Test{  //abstractクラスにしないでみる。
    abstract void func();
}
結果。コンパイルエラー。
abTest.java:10: Test は abstract として宣言する必要があります。
                                        func() を Test で定義しません。
class Test{
^
エラー 1 個
クラスをabstractにした(まだabstractメソッドのfunc()は実装していない。)
public class AbTest{
    public static void main(String args[]){
        Test ts = new Test();

        //func()メソッドを実装しないでみる。
    }
}

abstract class Test{
    abstract void func();
}
結果:コンパイルエラー。規則2登場
abTest.java:3 Test は abstract です。インスタンスを
                  生成することはできません。
    Test ts = new Test();
              ^
エラー 1 個
規則2:abstactクラスのオブジェクトを生成することはできない。
abstractのクラスは継承することで利用される。

それをふまえて、
public class abTest{
    public static void main(String args[]){
        Test2 ts = new Test2();
    }
}

class Test2 extends Test{
    //中身なし。
}

abstract class Test{
    abstract void func();
}
結果。
abTest.java:7: Test2 は abstract として宣言する必要があります。
                   func() を Test で定義しません
class Test2 extends Test{
^
エラー 1 個
最初のと同じエラー。

素直にオーバーライド。
public class AbTest{
    public static void main(String args[]){
        Test2 ts = new Test2();
    }
}

class Test2 extends Test{
    public void func(){
        System.out.println("func()実装。");
    }
}

abstract class Test{
    abstract void func();
}
で、結果
func()実装。
正常に動作。

Advertisement

ショートカット

634
634ブログ
このカテゴリのトップページに戻る
Incubator(Pukiwiki)
634ラボ
   UIコレクションギャラリー
   ZO-3ジェネレーター

サイト検索


Y!ログール