検索

ホームページ  >  に質問  >  本文

为什么Java中不能有静态的构造函数?

我的理解是这样的:Java中,构造函数是用来实例化对象的,实例化时必定有确定的引用变量。但在调用静态函数时编译器还是通过解析原来的类来调用静态方法,不通过对象。因此构造函数不能是静态的。
这种理解正确吗?

黄舟黄舟2767日前435

全員に返信(2)返信します

  • 巴扎黑

    巴扎黑2017-04-17 16:30:37

    クラス メソッド (静的メソッド) であってもインスタンス メソッドであっても、重要なのは、このメソッドがクラスの特定のインスタンスの存在を必要とするかどうか、そしてこのメ​​ソッドが特定のインスタンスに対して動作する必要があるかどうかだと思います。クラスの。端的に言えば、〈🎜〉の存在が必要かどうかです。 this

    構築方法は、クラスのインスタンスが生成された後、新しい特定のインスタンス オブジェクトを初期化することです。もちろん、これはクラス メソッドではなく、インスタンス メソッドに似ています。

    返事
    0
  • 迷茫

    迷茫2017-04-17 16:30:37

    コンストラクターの重要性は何ですか?
    主な機能は、実際にはいくつかのインスタンス属性を初期化することです。コンストラクターは静的になるように設計されているため、静的メソッドは必然的にインスタンス属性にアクセスします。
    解決策は 2 つあります。
    1. 内部クラスが外部クラスへの暗黙的な参照を持つのと同じように、JVM は静的コンストラクターのオブジェクトへの参照を暗黙的に追加し、この参照を使用します。 インスタンスへのアクセスオブジェクトのプロパティはコードからは見えません。これは Java 言語の仕様と矛盾します。静的メソッドはインスタンス フィールドにアクセスできないため、お勧めできません。
    2. Python のようなソリューションを使用します。コンストラクターの最初のパラメーターは、デフォルトでは self などのオブジェクトへの参照であり、self を通じてオブジェクトのインスタンス フィールドにアクセスしますが、このコードは Java に準拠しています。スタイル?死ぬほど文句言われます

    とても便利なので、インスタンス メソッドを直接使用してみてはいかがでしょうか?

    返事
    0
  • キャンセル返事