-4

Java では、実際にメインが開始されたときにコンストラクターが呼び出されると講師が言っているのを聞いたことがあります。しかし、いろいろ試しているうちに、コンストラクターが自動的に呼び出されないことがわかりました。コードは次のようになります。

class Anther {

    static void method1(){
        System.out.println("this is method");
    }

    static void method2(){
        System.out.println("this is second one");
    }

    Anther(){
        System.out.println("Anther class");
    }
    public static void main(String[] args){
        System.out.println("first line");

        method1();
        System.out.println("second line");

        method2();
        System.out.println("end of story");     
    }
}

出力は次のようになりました

first line
this is method
second line
this is second one
end of story

「Anther クラス」を出力しなかった理由。

4

6 に答える 6

4

Antherオブジェクトを作成していません。コンストラクターは、オブジェクトの作成時にのみ呼び出されます。

staticオブジェクトを作成せずにリソースにアクセスできます。

于 2012-11-30T06:39:38.277 に答える
4

Java では、実際にメインが開始されたときにコンストラクターが呼び出されると講師が言っているのを聞いたことがあります。

あなたの講師が実際にそう言ったかどうかは疑わしい。もしそうなら、確かに彼はどこかで間違っているか、あなたが彼を誤解している可能性があります

さて、ここにあります: -

newコンストラクターは、演算子を使用してクラスをインスタンス化するまで呼び出されません

したがって、上記の場合、次のコードを使用するとコンストラクターが呼び出されます。

Anther obj = new Anther();

あなたのmain方法で。

上記のステートメントnewでは、 operator は のオブジェクトを作成Antherし、新しく作成されたインスタンスでコンストラクターを呼び出してその状態を初期化します。

講師と一緒にこのことを明確にしてください。

于 2012-11-30T06:40:54.157 に答える
0

-クラスのオブジェクトを作成するときは常に、そのコンストラクターが呼び出されます。

-だけでなく、オブジェクト クラス コンストラクターが呼び出されるまでのスーパークラス コンストラクター。contructor

そして、スーパークラスからサブクラスへの流れの形成。object

-そして、Anther class インスタンスの作成を呼び出して、そのコンストラクターが呼び出されるようにする必要があります。

例えば:

public static void main(String[] args){

        Anther a = new Anther();     // Creation of an object of class Anther

        System.out.println("first line");

        method1();
        System.out.println("second line");

        method2();
        System.out.println("end of story");     
    }
于 2012-11-30T06:43:56.557 に答える
0

Instanceクラスを作成すると、コンストラクターが自動的に呼び出されます。

Anther ant = new Anther();

ここでは、クラスのインスタンスを作成しています。この時点で、コンストラクターが呼び出されます。

于 2012-11-30T06:40:18.417 に答える
0

デフォルトでは、クラスオブジェクトのインスタンスがある場合にのみコンストラクターが呼び出されます。

つまり

Anther obj  = new Anther();

だから、それがdefaultコンストラクタが呼び出されない理由です。

static methodsJVMコンストラクターを呼び出す前にロードされるクラス変数です。

super constructorこの例では範囲外です。この Anther クラスの基本クラスがあるため、呼び出されます。[Class A extends Class B]

これで疑問が解消されることを願っています。

ありがとう、パヴァン

于 2012-11-30T06:49:38.457 に答える
0

これを試して

public static void main(String[] args){
        Anther a = new Anther();//you shoule create instance;
        System.out.println("first line");

        method1();
        System.out.println("second line");

        method2();
        System.out.println("end of story");     
    }
于 2012-11-30T06:42:20.333 に答える