为什么你不能在Java中将一个类声明为静态?

2022-08-31 04:26:34

为什么你不能在Java中将一个类声明为静态?


答案 1

只有嵌套类可以是静态的。通过这样做,您可以使用嵌套类,而无需外部类的实例。

class OuterClass {
    public static class StaticNestedClass {
    }

    public class InnerClass {
    }

    public InnerClass getAnInnerClass() {
        return new InnerClass();
    }

    //This method doesn't work
    public static InnerClass getAnInnerClassStatically() {
        return new InnerClass();
    }
}

class OtherClass {
    //Use of a static nested class:
    private OuterClass.StaticNestedClass staticNestedClass = new OuterClass.StaticNestedClass();

    //Doesn't work
    private OuterClass.InnerClass innerClass = new OuterClass.InnerClass();

    //Use of an inner class:
    private OuterClass outerclass= new OuterClass();
    private OuterClass.InnerClass innerClass2 = outerclass.getAnInnerClass();
    private OuterClass.InnerClass innerClass3 = outerclass.new InnerClass();
}

来源:

关于同一主题:


答案 2

默认情况下,顶级类是静态的。默认情况下,内部类是非静态的。您可以通过显式将内部类标记为静态来更改内部类的默认值。顶级类由于是顶级的,因此不能具有非静态语义,因为不能有要引用的父类。因此,无法更改顶级类的默认值。


推荐