Java 9 – Private methods in interface

In this topic, we will discuss the private and private static methods inside an interface.

interface in Java is a concept which is used to achieve abstraction. In early versions of Java, an interface can contain only abstract methods and constants until Java 8 which allows to add default and static methods as well.

In Java 9, interface allows creating private and private static methods. It means now an interface can have the following:

  1. Abstract methods
  2. Constant variables
  3. Default methods (added in Java 8)
  4. Static methods (added in Java 8)
  5. Private methods (added in Java 9)
  6. Private static methods (added in Java 9)

Now, let’s understand what is private method and why it is important.

Interface Private Method

A private method declared inside an interface is similar to declared inside a class. It is declared using private access modifier to keep it limited to the interface. These methods can’t be accessible outside the interface and don’t inherit to the interface or implementing class.

The primary purpose behind to add private method was to share common code between non-abstract methods within the interface. Let’s see an example.


Let’s have a Coffee

Interface Private Static Methods

Like private instance methods, private methods can be static as well. A private static method can not be accessible from outside the interface and can only be accessible inside the default or static methods.


Let’s have a Coffee
Let’s have a Tea

If we want to share code between instance methods, private instance methods and private static methods both can be used. But If we want to share code between static methods, use private static methods only. See, what happens, if we try to access a private method inside a static method.


Error : Cannot make a static reference to the non-static method

Key-points to remember

  1. Interface private methods must have implementation body; they can’t be declared as abstract methods.
  2. A static method can call only private static method, but a default method can call both the static and non-static(instance) private methods.
  3. The interface private methods support sharing common code between non-abstract methods(default, static and private).


This topic is all about the private methods in the interface. This feature makes the interface more powerful and advance. Now, interface supports both private and private static methods within an interface.

That’s all about Java 9 Private methods in interface.

Related Posts

  • 12 October

    Java 9 JShell tutorial

    The Java JShell is a command-line tool that is introduced in Java 9 version. It helps to execute/test Java statements in a single line. It is based on REPL (Read Evaluate Print Loop) that reads a code statement, execute that and print the output, statement after statement. It reads the statement and immediately shows the […]

  • 11 October

    Java 9: Stream API Improvements

    In Java 9, following methods are added to Stream interface of stream package. These methods are default and static. The takeWhile() Method This method is included in Stream interface and used to collect the elements into a stream. It takes all the elements till the condition specified as predicate. For example, we want to collect […]

  • 24 September

    Java 9 – Process API Improvements

    In this post, we will see about Java 9 process API improvements. Java improved its Process API in Java 9 version that includes new methods for Process class and two new interfaces ProcessHandle and ProcessHandle.Info. These methods are used to create a new process and get process information like process status, running time, process id, […]

  • 19 September

    Java try with resources

    In this post, we will see about Java try with resources Statement. Java try with resources is a feature of Java which was added into Java 7. It helps to close all the resources declared within try block. It automatically closes the resources after being used. A resource can be any file or a database […]

  • 19 September

    Java 9 – Javadoc Improvement

    Java has upgraded its Javadoc for better user interaction and user-experience. It includes a simplified search, HTML generator, Doclet API, etc. What is Javadoc The Javadoc is a tool like javac and a part of JDK. It is used to generate HTML documentation of Java source code. If you ever visit to oracle site you […]

  • 19 September

    Java 9 – @SafeVarargs Annotation

    In this post, we will see about @SafeVarargs Annotation in Java 9. The @SafeVarargs is an annotation that is used to perform safe operations. When a method takes variable arguments, then it may cause to unsafe operation, so the @SafeVarargs annotation tells to the compiler to perform safe operations. For example, if we don’t use […]

Leave a Reply

Your email address will not be published. Required fields are marked *

Subscribe to our newletter

Get quality tutorials to your inbox. Subscribe now.