Qu'est-ce que la classe interne en Java ?

Publié: 2022-04-29

Le concept de classe interne en Java est fondamental pour la programmation Java. En Java, une classe imbriquée et une classe interne sont deux idées très similaires mais légèrement distinctes de la conception de classes et vont souvent de pair.

Une classe imbriquée est définie dans une autre classe et a deux types - classe imbriquée statique et classe imbriquée non statique. D'autre part, une classe interne est un type de classe imbriquée non statique et est en outre de trois types - classe interne membre, classe interne anonyme et classe interne locale.

Alors, que signifient ces trois types de classes internes et à quoi servent-elles ? Lisez la suite pour le découvrir dans ce guide détaillé sur la classe interne Java.

Table des matières

Signification de la classe interne en Java

Une classe imbriquée non statique ou une classe interne est définie dans une autre classe et a accès aux membres de la classe externe (classe englobante). Au contraire, une classe imbriquée statique est également une classe définie dans une autre classe, mais contrairement à une classe imbriquée non statique, elle ne peut pas accéder aux variables membres de sa classe externe. Dans le cas d'une classe imbriquée non statique, nous ne sommes pas obligés de créer une instance de la classe externe. Mais dans le cas d'une classe interne, il faut d'abord instancier la classe externe pour pouvoir instancier la classe interne.

La source

Types de classe interne en Java

En Java, les classes internes sont des trois types suivants :

  • Classe interne des membres
  • Classe interne anonyme
  • Classe intérieure locale

Maintenant, comprenons chaque type de classe interne avec des exemples.

1. Classe interne des membres

Une classe interne membre en Java est une classe imbriquée non statique créée à l'intérieur d'une classe mais en dehors d'une méthode. Également appelée classe interne normale, une classe interne de membre peut être déclarée avec des modificateurs d'accès tels que privé, public, par défaut et protégé.

La syntaxe d'une classe interne de membre est la suivante :

classe extérieure{

//code

classe intérieure{

//code

}

}

Classe interne de membres dans l'exemple Java :

Vous trouverez ci-dessous un programme pour montrer comment créer une classe interne et y accéder. Nous allons rendre la classe interne privée et utiliser la méthode display_Inner() pour accéder à la classe.

classe DemoOuter {

nombre entier ;

// classe interne

classe privée DemoInner {

public void print() {

System.out.println("Ceci est la classe interne");

}

}

// Accéder à la classe interne à partir de la méthode dans

void display_Inner() {

DemoInner intérieur = new DemoInner();

intérieur.print();

}

}

classe publique MaClasse {

public static void main(String args[]) {

// Instanciation de la classe externe

DemoOuter externe = new DemoOuter();

// Accéder à la méthode display_Inner()

externe.display_Inner();

}

}

Sortie : il s'agit de la classe interne

Dans l'exemple ci-dessus, OuterDemo est la classe externe, InnerDemo est la classe interne, nous instancions la classe interne dans la méthode display_Inner(), qui est invoquée à partir de la méthode principale.

Explorez nos cours populaires de génie logiciel

SL. Non Programmes de développement de logiciels
1 Master of Science en informatique de LJMU & IIITB Programme de certificat de cybersécurité Caltech CTME
2 Bootcamp de développement de la pile complète Programme PG dans Blockchain
3 Executive Post Graduate Program in Software Development - Spécialisation DevOps Voir tous les cours de génie logiciel

2. Classe interne anonyme

Une classe interne anonyme en Java est une classe interne déclarée sans nom de classe et pour laquelle un seul objet est créé. Les classes internes anonymes en Java sont déclarées et instanciées en même temps. Ils sont particulièrement utiles lorsque nous voulons remplacer la méthode d'une classe ou d'une interface.

La syntaxe d'une classe interne anonyme en Java est la suivante :

AnonymousInner an_inner = new AnonymousInner() {

public void ma_méthode() {

//code

}

} ;

Une classe interne anonyme en Java peut être créée de deux manières :

  1. Utiliser la classe
  2. Utilisation de l'interface

Exemple de classe interne anonyme dans Java (utilisant la classe):

repas de classe abstraite {

vide abstrait manger();

}

classe TestAnonymousInner{

public static void main(String args[]){

Repas m=nouveau repas(){

void manger(){System.out.println("Bon appétit !");}

} ;

Viande();

}

}

Sortie : Bon appétit !

Exemple de classe interne anonyme dans Java (utilisant l'interface):

Jeu d'interface{

annuler le jeu();

}

classe TestAnnonymousInner1{

public static void main(String args[]){

Jeu g=nouveau jeu(){

public void play(){System.out.println("Jeux de plein air");}

} ;

g.play();

}

}

Sortie : Jeux de plein air

3. Classe intérieure locale

Une classe interne locale en Java est une classe créée à l'intérieur d'une méthode. Comme dans le cas des variables locales, la portée de la classe interne locale reste restreinte au sein de la méthode.

Les classes internes locales sont définies à l'intérieur d'un bloc : un corps de méthode, une clause if ou une boucle for. Une classe interne locale n'est membre d'aucune classe englobante, mais appartient plutôt au bloc dans lequel elle est définie. Ainsi, même si une classe interne locale en Java ne peut pas être associée à des modificateurs d'accès, vous pouvez la marquer abstraite ou finale. Si nous voulons invoquer les méthodes d'une classe interne locale, nous devons instancier la classe à l'intérieur de la méthode.

Exemple de classe interne locale dans Java :

Vous trouverez ci-dessous un exemple de programme pour montrer comment instancier l'objet d'une classe interne locale déclarée dans la méthode d'une classe externe.

package innerClass ;

classe publique Outer_Class

{

// Une méthode d'instance de la classe Outer_Class.

affichage vide public()

{

// Déclaration d'une classe interne locale de méthode.

classe Inner_Class

{

public void msg(){

System.out.println("Ceci est une classe interne locale!");

}

}

// Crée une instance d'une classe interne locale de méthode et appelle la méthode msg() en utilisant la variable de référence d'objet i.

Inner_Class i = new Inner_Class();

i.msg();

}

public static void main(String[] args)

{

// Crée un objet de la classe externe Outer_Class.

Outer_Class o = new Outer_Class();

o.display();

}

}

Sortie : Il s'agit d'une classe interne locale !

En gardant à l'esprit les principes fondamentaux de la classe interne Java, comprenons pourquoi nous en avons besoin en premier lieu.

Avantages de la classe interne Java

Une classe interne en Java apporte trois utilitaires importants à la table. Ceux-ci sont les suivants :

1. Puisqu'une classe interne Java peut accéder aux données membres et aux méthodes de la classe externe/principale, y compris privée, elle représente un type de relation spécifique.

2. Une classe interne Java réduit considérablement le codage car elle nécessite moins d'écriture.

3. Une classe interne en Java regroupe logiquement les classes et les interfaces en un seul endroit, améliorant ainsi la lisibilité du code et facilitant sa maintenance.

Résumé

Le concept de classes imbriquées simplifie et ajoute de la flexibilité à la création de classes n'importe où dans la programmation Java. À cet égard, une classe imbriquée non statique connue sous le nom de classe interne est particulièrement utile, comme nous l'avons déjà vu dans notre discussion jusqu'à présent.

Nous aimerions conclure en indiquant deux cas où l'utilisation de la classe interne semble la plus appropriée. Premièrement, une classe interne Java est idéale lorsque deux classes ont une relation étroite et ne sont accessibles par aucune autre classe. Et deuxièmement, les classes internes sont monnaie courante dans la gestion des événements de programmation de l'interface graphique Java. Par conséquent, les classes internes Java peuvent être utilisées en toute sécurité lorsque des écouteurs et leurs composants d'interface graphique sont impliqués.

Vous vous demandez où apprendre Java ?

Certification PG liée à l'emploi d'upGrad en génie logiciel est ce que vous cherchez !

Spécialement conçue pour les nouveaux diplômés et les dernières années, la certification PG liée à l'emploi d'upGrad en génie logiciel est parfaite pour ceux qui veulent apprendre à programmer et se placer dans des rôles logiciels d'entrée de gamme. Ce programme en ligne de 5 mois enseignera les meilleures compétences logicielles telles que Java, JavaScript, HTML5, DSA, AWS, MERN, et plus encore !

Faits saillants du programme :

  • Spécialisation en MERN Stack/Cloud-Native
  • Plus de 500 heures d'apprentissage en ligne
  • Plus de 350 heures de formation pratique
  • 50+ sessions en direct
  • Cinq projets industriels
  • Mise en réseau avec des experts de l'industrie
  • Forums de questions-réponses avec des pairs et des experts de l'industrie
  • Soutien à l'apprentissage des assistants d'enseignement et des mentors de l'industrie

Inscrivez-vous dès aujourd'hui pour apprendre des meilleurs de l'industrie !

Quelle est la différence entre classe interne et sous-classe ?

Une classe interne est une classe imbriquée ou définie dans une autre classe. D'autre part, une sous-classe est une classe dérivée d'une autre classe. De plus, alors qu'une classe interne n'est accessible qu'en utilisant la référence de la classe externe dans laquelle elle est imbriquée, une sous-classe est accessible directement à moins que la sous-classe n'ait hérité de variables privées.

Pouvons-nous écrire une classe dans une classe en Java ?

Oui, nous pouvons définir une classe dans une autre classe en Java. Une telle classe est connue sous le nom de classe imbriquée, et elle nous permet d'organiser logiquement les classes en un seul endroit, créant ainsi un code plus maintenable et lisible. Dans le cadre de sa classe englobante, une classe imbriquée peut être déclarée public, private, package-private ou protected.

La classe interne Java peut-elle être privée ?

Oui, une classe interne Java peut être privée. Mais une fois qu'une classe interne est déclarée privée, elle n'est plus accessible à partir d'un objet extérieur à la classe. Les classes internes et externes ont accès aux variables d'instance privées et aux méthodes privées les unes des autres. Tant que nous sommes dans la classe externe ou interne, les modificateurs private et public ont le même effet.