0

私は、静的の概念とメインクラスでの静的の理由を完全に理解できるかどうかを確認しようとしています。キーワード static は、メイン クラスを参照します。メイン クラスのメソッドが静的である理由は、メイン クラスがオブジェクトではなくクラス自体を処理するためです。

ただし、コンストラクターはオブジェクトを処理するため、非静的コンストラクターを使用します。これは、オブジェクトには固有の特性があり、それらを静的にする意味がないためです。

私の発言が間違っていたかどうか、または正しい方向に導くことができるかどうかを誰かが知ることができれば、それは私を大いに助けてくれるでしょう! :)

4

4 に答える 4

7

私は、静的の概念とメインクラスでの静的の理由を完全に理解できるかどうかを確認しようとしています。

Javaにはメインクラスのようなものはありません。

キーワード static は、メイン クラスを参照します。

いいえ、静的クラスまたは静的クラス メンバーを指します。

メイン クラスのメソッドが静的である理由は、メイン クラスがオブジェクトではなくクラス自体を処理するためです。

メインクラスのようなものはありません。発言は無意味です。

ただし、コンストラクターはオブジェクトを処理するため、非静的コンストラクターを使用します。これは、オブジェクトには固有の特性があり、それらを静的にする意味がないためです。

すべてのコンストラクターは「非静的」です。静的コンストラクターのようなものはありません。この議論には何の意味もありません。

私の発言が間違っていたかどうか、または正しい方向に導くことができるかどうかを誰かが知ることができれば、それは私を大いに助けてくれるでしょう! :)

存在しない「メインクラス」と「静的コンストラクター」を忘れて、もう一度やり直す必要があると思います。基本的に静的メソッドとは、クラスのインスタンスがなくても呼び出すことができるメソッドを指します。逆に、コンストラクターはクラスのインスタンスを作成するため、論理的に静的にすることはできません。

于 2011-10-18T00:55:54.500 に答える
2

Java 仕様 (第 3 版) から:

静的フィールドについてhttp://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.3.1.1

フィールドが静的であると宣言されている場合、クラスのインスタンスが最終的にいくつ (場合によってはゼロ) 作成されても、フィールドの具体化は 1 つだけ存在します。クラス変数と呼ばれることもある静的フィールドは、クラスが初期化されるときに具体化されます。

静的メソッドについてhttp://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.4.3.2

static として宣言されたメソッドは、クラス メソッドと呼ばれます。クラス メソッドは、特定のオブジェクトを参照せずに常に呼び出されます。キーワード this またはキーワード super を使用して現在のオブジェクトを参照しようとしたり、クラス メソッドの本体で周囲の宣言の型パラメーターを参照しようとすると、コンパイル時エラーが発生します。静的メソッドが抽象として宣言されると、コンパイル時エラーになります。

于 2011-10-18T00:56:47.357 に答える
1

ではない正確に...

staticフィールド/メソッドなどがクラスの特定のインスタンスではなく、クラスに属していることを意味します。クラスのすべてのインスタンスは静的フィールドにアクセスでき、インスタンス間で共有される各静的フィールドのインスタンスは1 つだけです。

main メソッドは、最初にインスタンスを作成せずに呼び出されるため、静的でなければなりません。

すべての静的メソッドは、クラスのインスタンスを作成せずに呼び出すことができます。メイン メソッドがクラスのインスタンスを作成しない限り、メイン メソッドが呼び出すメソッドもすべて静的である必要があります。その後、そのインスタンスでインスタンス メソッドを呼び出すことができます。

于 2011-10-18T00:57:56.933 に答える
-1
public class MyClass { // This name will dictate the name of your file

    public Sting myVariable = ""; // Field or Global variable

    public void MyClass() { // Constructor
    }

    public static void main (String[] args){ // This is the "main" "Method"
        MyClass.print("Hello "); // Static method call

        MyClass myClass = new MyClass(); // Non-static method call
        myClass.print("World");
    }

    public static void print(String s){ // Static method
        System.out.print(s);
    }

    public void print(String s){ // Non-static method
        this.myVariable = s; // Changing the value of a field/global variable
        System.out.print(s);
    }
}

静的メソッド呼び出し - 静的メソッド呼び出しを行うと、クラス/オブジェクト内のデータに永続的な変更を加えることはありません。

非静的メソッド呼び出し - このタイプのメソッド呼び出しでは、コンストラクター メソッド (静的にすることはできません) を使用してオブジェクトを「インスタンス化」する必要があります。その後、オブジェクトを渡すことができます。メソッドがクラスのフィールド/グローバル変数の値を変更した場合、その値は他の誰か/何かが変更するまでそのオブジェクトで同じままです。

オブジェクトをインスタンス化する場合、そのオブジェクト内の非静的メソッドのみを「呼び出す」(呼び出す) ことができます。同様に、オブジェクトから静的メソッドを呼び出すことはできません。クラス名、ピリオド、メソッド名の順に指定して呼び出す必要があります。

静的メソッドは、他の静的コンテンツのみを参照できます。非静的は両方を参照できます。

于 2011-10-18T01:28:44.363 に答える