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

时间:2012-11-04 12:32:22

标签: java

  

可能重复:
  Java: Static Class?

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

static class c1(){

}

可以这样做吗?我对这个以及非静态内容的内存映射感到困惑。请帮忙

5 个答案:

答案 0 :(得分:8)

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

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

(我在JVM的内部工作了大约10年,我仍然觉得这很令人困惑。)

答案 1 :(得分:2)

  

可以在java中使用static关键字对类进行实例化吗?例如:static class c1(){}

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

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

  

我对此感到困惑,并且使用非静态内容进行内存映射请帮助

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

答案 2 :(得分:1)

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

对于static class,它意味着该类的实例与外部类实例无关。

答案 3 :(得分:0)

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

您希望static关键字能做什么?

答案 4 :(得分: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();

    }
}