Access specifiers for classes or interfaces in Java

In Java, methods and data members of a class/interface can have one of the following four access specifiers. The access specifiers are listed according to their restrictiveness order.

1) private
2) default (when no access specifier is specified)
3) protected
4) public

But, the classes and interfaces themselves can have only two access specifiers when declared outside any other class.
1) public
2) default (when no access specifier is specified)



We cannot declare class/interface with private or protected access specifiers. For example, following program fails in compilation.

filter_none

edit
close

play_arrow

link
brightness_4
code

//filename: Main.java
protected class Test {}
  
public class Main {
  public static void main(String args[]) {
  
  }
}

chevron_right


Note : Nested interfaces and classes can have all access specifiers.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up