Java >> Tutoriel Java >  >> Tag >> class

Une classe peut-elle avoir une interface et une interface peut-elle avoir une classe en Java ?

Dans un premier temps, nous verrons une classe peut-elle avoir une interface en Java ?

  • Oui, il est possible de définir une interface à l'intérieur de la classe.
  • L'interface est définie dans une autre interface est connue sous le nom d'interface imbriquée, mais lorsque nous définissons une interface à l'intérieur de la classe, elle est également appelée interface imbriquée.
  • L'objectif de définir une interface à l'intérieur d'une classe est utilisé pour regrouper les interfaces associées afin qu'elles puissent être gérées facilement.
  • Une fois qu'une interface est définie dans une classe, nous ne pouvons pas accéder directement à une interface (c'est-à-dire qu'une interface doit être référencée par une classe).
  • Il existe une restriction sur les modificateurs d'accès lorsque nous définissons une interface dans une classe.
  • Il n'est pas obligatoire de préfixer le mot-clé "static" avec les interfaces définies dans une classe car l'interface est par défaut statique.

Syntaxe :

    class MyClass{
        // MyClass Code
        interface MyInterface(){
            //MyInterface Code
        }
    }

Exemple :

// Java program to demonstrate the example of
// defining an interface in a class

class MyClass {
    // Interface definition in a class
    interface MyInterface {
        void display();
    }
}

public class Main implements MyClass.MyInterface {
    String str = "we are learning Java Programming";
    // override abstract method of interface
    public void display() {
        System.out.print("Hi,");
    }

    public static void main(String[] args) {
        Main m = new Main();
        MyClass.MyInterface mc = new Main();

        // Calling Main class method of interface
        mc.display();
        System.out.println(m.str);
    }
}

Sortie

Hi, we are learning Java Programming

Dans un deuxième temps, nous verrons une interface peut-elle avoir une classe en Java ?

  • Oui, il est possible de définir une classe dans l'interface.
  • L'objectif de définir une classe à l'intérieur d'une interface est utilisé pour regrouper les interfaces associées afin qu'elles puissent être gérées facilement.
  • Une fois qu'une classe est définie dans une interface, nous ne pouvons pas accéder directement à une classe (c'est-à-dire qu'une classe doit être référencée par une interface).
  • Il n'y a aucune restriction sur les modificateurs d'accès lorsque nous définissons une classe dans une interface.
  • Il n'est pas obligatoire de préfixer le mot-clé "static" avec la classe définie dans une interface car la classe est publique par défaut.

Syntaxe :

    interface MyInterface{
        // MyInterface Code
        class MyClass(){
            // MyClass Code
        } 
    } 

Exemple :

// Java program to demonstrate the example of
// defining a class in an interface

interface MyInterface {
    // MyClass definition
    class MyClass {
        String str = "Java support OOPS Concept";
        void display() {
            System.out.print("Hi,");
        }
    }
}

public class Main extends MyInterface.MyClass {
    public static void main(String[] args) {
        // Main class is instantiated
        Main m = new Main();
        // Calling MyClass method
        m.display();
        System.out.println(m.str);
    }
}

Sortie

Hi, Java support OOPS Concept

Balise Java