Java中的类可以被声明为静态实例化吗?

6

可能重复:
Java:静态类?

在Java中,一个类可以被实例化为静态吗?

static class c1(){

}

这个能做到吗?我对此和非静态内存映射感到困惑。请帮忙。

5个回答

10

static 在类定义中的意义并不在于该类是否能够被实例化,而是在于该类是否必须从外部类的非静态方法中进行实例化。

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

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


静态内部类实例与创建实例无关。这正是我所需要的! - Matt Logan

2
您的术语不正确。 "实例化一个类" 意味着创建该类的实例;即 创建对象。 这是使用 new 操作完成的。 您的示例实际上是关于声明类。
话虽如此,是的,您可以将类声明为 static,但这只能针对嵌套类进行; 即在另一个类内部声明的类。
我不知道您在这里说什么。 如果您需要更多有关此问题的帮助,则需要更清楚地解释自己。

1

static与内存映射没有任何关系,它表示它没有与任何实例关联。

对于静态类来说,这意味着该类的实例不与外部类实例关联。


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

    }
}

在上面的例子中,多层继承被实例化了...那在JAVA中是可能的吗? - keshav kashyap

0

它打破了范式。考虑这个问题:静态成员是每个实例都共有的成员,但如何将这种共享的想法扩展到类呢?

你期望静态关键字做什么?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接