What's happening when a members inside a class
is declared as static
..? That members can be accessed without instantiating the class
. Therefore making outer class(top level class) static
has no meaning. Therefore it is not allowed.
But you can set inner classes as static (As it is a member of the top level class). Then that class can be accessed without instantiating the top level class. Consider the following example.
public class A {
public static class B {
}
}
Now, inside a different class C
, class B
can be accessed without making an instance of class A
.
public class C {
A.B ab = new A.B();
}
static
classes can have non-static
members too. Only the class gets static.
But if the static
keyword is removed from class B
, it cannot be accessed directly without making an instance of A
.
public class C {
A a = new A();
A.B ab = a. new B();
}
But we cannot have static
members inside a non-static
inner class.