【问题标题】:Can a class be instantiated as static in java? [duplicate]一个类可以在java中实例化为静态吗? [复制]
【发布时间】:2012-10-24 11:42:52
【问题描述】:

可能重复:
Java: Static Class?

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

static class c1(){

}

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

【问题讨论】:

    标签: java


    【解决方案1】:

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

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

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

    【讨论】:

    • "静态内部类实例与创建实例无关。"这就是我需要的!
    【解决方案2】:

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

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      对于static class,这意味着类的实例不与外部类实例关联。

      【讨论】:

        【解决方案4】:

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

        您希望静态关键字做什么?

        【讨论】:

          【解决方案5】:

          你可以有如下所示的静态类

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

          【讨论】:

          • 在上面的例子中..一个多级继承被实例化了......这在 JAVA 中可能吗?
          猜你喜欢
          • 2013-08-20
          • 1970-01-01
          • 2018-05-09
          • 2011-04-23
          • 2013-09-21
          • 2011-03-07
          • 2012-06-03
          • 2011-06-02
          • 1970-01-01
          相关资源
          最近更新 更多