修飾子の実験Advertisementabstract規則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!ログール |