1

テキストが言うように、静的メソッドは非静的データにアクセスしないので、ほぼすべてのプログラミング言語のmain()メソッド(静的として宣言)はどのようにしてインスタンスメンバーで機能することができますか?

4

5 に答える 5

4

Javaに関する限り、これは当てはまりません。インスタンス変数にアクセスできるのは、main内にそのクラスのインスタンスを作成した後でのみです。

クラスのインスタンスを作成すると、インスタンスではなくローカルのメソッドになり、そのオブジェクトのプロパティにアクセスしますが、mainメソッド内では、インスタンス変数を直接使用することはできません。

例えば

public class TestStatic1 {
    private int number = 0;

    private static int staticnumber = 0;

    public static void main(String[] args) {
        number = 10; // cannot compile at this line.

        staticnumber = 10;
    }
}

もう1つ

public class TestStatic1 {
    private int number = 0;

    private static int staticnumber = 0;

    public static void main(String[] args) {
        TestStatic1 static1 = new TestStatic1();
        static1.number = 10; // perfectly fine, accessed via an object.

        staticnumber = 10;
    }
}
于 2012-05-28T17:52:26.493 に答える
2

静的Mainメソッドは、少なくともC#では、アプリケーションで使用されるクラスのインスタンスを作成するために使用されます。これらのインスタンスは、インスタンス変数にアクセスするために使用されます。

ほとんどのアプリケーションnewでは、Mainメソッドでの呼び出しが表示されます。これにより、インスタンス変数にアクセスできるクラスのインスタンスが作成されます。

于 2012-05-28T17:55:27.337 に答える
1

Main-Methodは静的なエントリポイントです。Javaでは、ほとんどの場合次のようになります。

public class MainClass { 
    public static void main(String[] args){ 
        MainClass m = new MainClass();
        m.DoSomething();
        m.DoSomethingPrivate();

        DoSomethingStatic
    }

    public void DoSomething() {}
    private void DoSomethingPrivate() {}

    public static void DocSomethingStatic() {} 
}

保護されたインスタンスメンバーまたはプライベートインスタンスメンバーに直接アクセスすることしかできません。

于 2012-05-28T17:56:59.460 に答える
0

メソッドは、を保持するmainクラスの非静的フィールドにアクセスできません。インスタンスを提供する(またはメソッド内に新しいインスタンスを作成する)と、それらに正常にアクセスできます。これに似ています: main

public static void foo(String s) {
    System.out.println(s.toUpperCase());
}
于 2012-05-28T17:56:21.157 に答える
0

静的メソッドは非静的データにアクセスしませんより正確には:静的メソッドは非静的メンバーにアクセスしません。

于 2012-05-28T17:56:55.623 に答える