-4

メインクラス内に、実行時に呼び出されないように見えるデフォルトのコンストラクターがあります。次に例を示します。

public class Cat {
    private static int myval;

    Cat() throws IOException {
        this.myval = 7;
        System.out.println("Called constructor");
    }

    public static void main() {
        // Main program
    }
}

実行時に、ウィンドウに出力されている「呼び出されたコンストラクター」行が表示されません。きっとそれは明らかなことです!

よろしくお願いします。

4

4 に答える 4

2

まず、メソッドがありませんmain

あなたのものはpublic static void main()

それを実行しようとすると、コンパイラーはあなたが持っていないことを教えてくれますmain

ここに画像の説明を入力

次に、Cat をインスタンス化していません。この改訂されたクラスを試すと、出力が正しく表示されます。

public class Cat {
    private static int myval;

    Cat() throws IOException {
        this.myval = 7;
        System.out.println("Called constructor");
    }

    public static void main(String args[]) throws IOException {
        Cat c = new Cat();
    }
}

結果:

Called constructor
于 2013-04-21T11:38:46.253 に答える
1

コンストラクターは引き続き で呼び出す必要がありますmain。デフォルトのコンストラクターは、コンストラクターを定義していないクラスを参照するだけです。コンストラクターを定義したので、これは単なる引数なしのコンストラクターです。

ウィキペディアの記事、特に Java と C# を参照してください。

また、作成したメソッドは例外をスローするため、キャッチする必要があります。コードは次のようになります。

public class Cat {
    private static int myval;

    Cat() throws IOException {
        this.myval = 7;
        System.out.println("Called constructor");
    }

    public static void main() {
        try {
            Cat cat = new Cat()
        } catch (IOException e) {
            // do stuff with e
        }
    }
}

デフォルトのコンストラクタは次のようになります。

public class Cat { 
    private static int myval;

    public String meow() {
        return "Meow!";
    }
}

public class MainClass {
    public static void main(String[] argsv) {
        Cat cat = new Cat();
        System.out.println(cat.meow());
    }
}
于 2013-04-21T11:29:42.347 に答える
0

クラスのインスタンスを実際に作成したことはありませんね。メインメソッドで Cat クラスのインスタンスを作成する必要があります。

public static void main(){
// Main program
new cat();// this will invoke your constructor call
}
于 2013-04-21T11:28:20.230 に答える
0

Java 用語のデフォルト コンストラクターは、他のコンストラクターが存在しない場合に JVM によって生成されます。コンストラクターを作成すると、それはデフォルトのコンストラクターではなくなります!

また、前述のように、newキーワードを使用してCat()コンストラクターを呼び出す必要があります。

于 2013-04-21T11:29:48.890 に答える