为什么 Java 类不能声明为静态类?

2022-09-01 15:02:16

我试图找出为什么不能将类创建为静态?喜欢:

public static class Qwert{

    public static void main(String args[]){

        int x = 12;
        while(x<12){
            x--;
        }
        System.out.println(" the X value is : "+ x);
    }
}

答案 1

在 Java 中,关键字通常将方法或字段标记为存在,不是每个类的每个实例一次,而是一次。无论如何,类存在一次,因此实际上,所有类都以这种方式“静态”,并且所有对象都是类的实例。static

static内部类有意义,这是完全不同的:通常,内部类实例可以访问它绑定到的外部类实例的成员,但如果内部类是 ,则它没有这样的引用,并且可以在没有外部类实例的情况下实例化。也许你在某个地方看到了它,然后试图在顶级课堂上使用它,在那里它没有意义。static

或者,也许你在其他语言中看到了它,比如C#,它的语法非常像Java。

(有一次,我无法弄清楚为什么外部类实例没有被垃圾回收 - 这是因为我在其他地方保留了对其内部类实例之一的引用,而内部类没有,因此对外部类实例的引用。因此,默认情况下,我现在创建内部类。staticstatic


答案 2

若要防止实例化特定类,应添加一个私有构造函数。这将阻止“任何其他”类能够创建类型的对象。Qwert

例如:

    public static class Qwert{


        private Qwert() {}

        public static void main(String args[]){

            int x = 12;
            while(x<12){
                x--;
            }
            System.out.println(" the X value is : "+ x);
        }
    }