Can a top level class be private or protected | Java

No. Declaring a top-level class as private in Java would render it entirely futile, as it would become inaccessible to any other code. When attempting to specify a top-level class as private, the compiler will raise an error stating that the "modifier private is not allowed here," signifying that a top-level class cannot be private.

However, Java does permit the usage of private classes, but exclusively as inner or nested classes. In the case of a private inner or nested class, its accessibility is confined to the scope of its outer class, ensuring that it remains encapsulated within its containing class and cannot be accessed from outside.

Can we declare class as protected in java

A protected class member in Java is similar to a package-private member, with the additional capability of being accessed from subclasses. By defining a field as protected, it becomes accessible within the same package as well as outside the package, but only through inheritance (i.e., within the subclass).

If all classes are permitted to subclass the protected class, its accessibility becomes comparable to that of a public access specifier. However, since there is no means to restrict the subclassing of a class to only a few classes, the use of protected access specifiers for top-level classes is disallowed, rendering it meaningless.


A top-level class in Java cannot be declared as private or protected. It can only have public or default (package-private) access modifiers.