6

可能重复:
Java:静态类?

一个类可以在java中实例化为静态吗?

static class c1(){

}

这可以做到吗?我对此感到困惑,并且对非静态内容的内存映射感到困惑。请帮忙

4

5 回答 5

10

类定义的意义static不在于该类是否可以实例化,而在于该类是否必须从外部类的非静态方法中实例化。

非静态内部类实例与创建它们的实例相关联——内部类实例中有一个指向创建实例的指针(这在许多方面都很有用)。静态内部类实例与创建实例无关。

(我在 JVM 内部工作了大约 10 年,但我仍然觉得这很混乱。)

于 2012-11-04T12:56:13.133 回答
2

可以用 java 中的 static 关键字实例化该类吗?例如:静态类 c1(){ }

您的术语不正确。“实例化一个类”是指创建一个类的实例;即创建一个对象。这是使用new操作完成的。您的示例实际上是关于声明一个类。

话虽如此,是的,您可以将类声明为static,但这只能用于嵌套类;即另一个类中声明的类。

我对此感到困惑,并且内存映射与非静态的东西的请帮助

我不知道你在这里说什么。如果您在这一点上需要更多帮助,则需要更清楚地解释自己。

于 2012-11-04T12:43:41.153 回答
1

static 与内存映射没有任何关系。这意味着没有与之关联的实例。

对于 astatic class它意味着类的实例不与外部类实例相关联。

于 2012-11-04T12:56:36.993 回答
0

它打破了范式。考虑一下:静态成员是每个实例都具有的共同成员,但是不清楚如何将共享的这种想法扩展到一个类?

您期望 static 关键字做什么?

于 2012-11-04T12:57:35.793 回答
0

您可以拥有静态类,如下所示

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();

    }
}
于 2012-11-04T13:11:03.370 回答