重複の可能性:
Java: 静的クラス?
javaでクラスを静的としてインスタンス化できますか?
static class c1(){
}
これはできますか?私はこれと非静的なものとのメモリマッピングと混同しています。助けてください
重複の可能性:
Java: 静的クラス?
javaでクラスを静的としてインスタンス化できますか?
static class c1(){
}
これはできますか?私はこれと非静的なものとのメモリマッピングと混同しています。助けてください
クラス定義での重要性はstatic
、クラスをインスタンス化できるかどうかではなく、外側のクラスの非静的メソッド内からクラスをインスタンス化する必要があるかどうかです。
非静的内部クラス インスタンスは、それらを作成したインスタンスに結び付けられます。内部クラス インスタンスには、作成元のインスタンスに戻るポインターがあります (これは多くの点で役立ちます)。静的な内部クラスのインスタンスは、作成中のインスタンスに関連付けられていません。
(私は JVM の内部で約 10 年間働いてきましたが、いまだに混乱しています。)
java の static キーワードを使用してクラスをインスタンス化できますか? 例: static class c1(){ }
あなたの用語は正しくありません。「クラスのインスタンス化」とは、クラスのインスタンスを作成することを意味します。つまり、オブジェクトを作成します。これはnew
操作を使用して行われます。あなたの例は、実際にクラスを宣言することです。
そうは言っても、はい、クラスを として宣言できますがstatic
、これはネストされたクラスに対してのみ行うことができます。つまり、別のクラス内で宣言されたクラスです。
これと非静的なものとのメモリマッピングと混同しています助けてください
私はあなたがここで何について話しているのか見当がつきません。この点についてさらに支援が必要な場合は、自分自身をより明確に説明する必要があります。
static はメモリ マッピングとは関係ありません。これは、関連付けられているインスタンスがないことを意味します。
a のstatic class
場合、クラスのインスタンスが外部クラスのインスタンスに関連付けられていないことを意味します。
それはパラダイムを壊します。これを考えてみましょう: 静的メンバーは、すべてのインスタンスが共通に持つメンバーですが、この共有の概念をクラスに拡張する方法が明確ではありませんか?
static キーワードが何をすることを期待していましたか?
以下に示すように、静的クラスを持つことができます
class A
{
static class B //static inner class
{
static void dis()
{
System.out.println("this is me");
}
}
}
class four extends A.B
{
public static void main(String args[])
{
dis();
}
}