Explorer l'héritage dans le langage de programmation Java

Explorer l'héritage dans le langage de programmation Java

L'héritage est l'un des concepts de base de la programmation orientée objet. En programmation, le mot héritage représente une relation dans laquelle une classe enfant assume l'état et le comportement d'une classe parent.





Le but de l'héritage dans le développement de logiciels est de faciliter la réutilisation de logiciels sûrs et fiables. L'un des principaux avantages de l'héritage est qu'il élimine le code redondant dans vos programmes.





notepad++ gestionnaire de plugin manquant

Comment fonctionne l'héritage

L'idée derrière l'héritage est que de nombreuses classes ou objets ont le même ensemble d'attributs et de méthodes. Par conséquent, dans l'esprit de produire un logiciel fiable, de nouvelles classes peuvent désormais s'appuyer sur des classes apparentées préexistantes et, si besoin, s'étendre sur des états et des comportements existants.





Un exemple concret du fonctionnement de l'héritage serait de considérer les fruits. Il s'agit d'une étiquette large qui sert à encapsuler une gamme d'articles différents.

Une pomme est un fruit et une orange aussi. Cependant, une orange n'est pas une pomme, vous n'auriez donc pas de fruits parmi vos articles en stock si vous possédiez un magasin. Vous pourriez peut-être avoir une section de fruits dans votre inventaire, et sous cette section, vous auriez des articles plus spécifiques comme des pommes et des oranges.



C'est ainsi que fonctionne l'héritage.

Utiliser l'héritage en Java

L'héritage peut être utilisé dans n'importe quel langage de programmation qui utilise le paradigme de programmation orienté objet . Cependant, la manière exacte dont l'héritage est utilisé dépend du langage de programmation spécifique.





Par exemple, C++ est aussi un langage de programmation orienté objet . C++ prend en charge ce que l'on appelle l'héritage multiple, tandis que Java ne prend en charge que l'héritage unique.

Cela signifie qu'en Java, une classe parente peut avoir plusieurs classes enfant, mais chaque classe enfant ne peut avoir qu'une seule classe parent (héritage unique). Cependant, il existe un moyen d'obtenir un héritage multiple indirect en Java, en créant une relation grand-parent, parent et enfant.





Création de la classe parent en Java

Le processus de sélection d'une classe parente à partir d'un document d'exigences logicielles est connu sous le nom d'analyse orientée objet. Au cours de ce processus, l'expression est a est souvent utilisée pour identifier les relations d'héritage possibles. En vous basant sur notre exemple ci-dessus, vous devriez pouvoir voir que fruit serait notre classe parente.

Exemple de classe parent de fruits


public class Fruit {
//Variable Declaration
protected String seed;
protected String skinColor;
protected String taste;
//Default Constructor
public Fruit(){
seed = '';
skinColor ='';
taste ='';
}
//Primary Constructor
public Fruit(String seed, String skinColor, String taste){
this.seed = seed;
this.skinColor = skinColor;
this.taste = taste;
}
//getters and setters
public String getSeed() {
return seed;
}
public void setSeed(String seed) {
this.seed = seed;
}
public String getSkinColor() {
return skinColor;
}
public void setSkinColor(String skinColor) {
this.skinColor = skinColor;
}
public String getTaste() {
return taste;
}
public void setTaste(String taste) {
this.taste = taste;
}
//eat method
public void eat(){
//general code on how to eat a fruit
}
//juice method
public void juice() {
//general code on how to juice a fruit
}
}

L'un des aspects les plus notables de la classe parent ci-dessus est le modificateur d'accès utilisé avec chaque déclaration de variable. Le modificateur d'accès protégé est idéal pour une utilisation dans les classes parent car il empêche les classes non-enfant d'accéder aux attributs de données de la classe parent.

Plus bas dans le code, vous découvrirez les constructeurs, les getters et les setters qui sont des blocs de construction généraux pour toute classe Java. Enfin, vous découvrirez deux méthodes (jus et manger) qui sont créées dans la classe parent de notre programme car elles sont universelles pour tous les fruits - tous les fruits peuvent être mangés et pressés.

Création de classes enfants en Java

Les classes enfants sont généralement appelées classes spécialisées ou dérivées car elles héritent de l'état et du comportement d'un parent et personnalisent souvent ces attributs pour qu'ils soient plus spécifiques.

En continuant avec notre exemple, vous devriez être en mesure de voir pourquoi orange serait une classe enfant appropriée de la classe fruit ci-dessus.

Exemple de classe enfant orange


public class Orange extends Fruit{
//variable declaration
private int supremes;
//default constructor
public Orange() {
supremes = 0;
}
//primary constructor
public Orange(String seed, String skinColor, String taste, int supremes){
super(seed, skinColor, taste);
this.supremes = supremes;
}
//getters and setters
public int getsupremes() {
return supremes;
}
public void setsupremes(int supremes) {
this.supremes = supremes;
}
//eat method
public void eat(){
//how to eat an orange
}
//juice method
public void juice() {
//how to juice and orange
}
//peel method
public void peel(){
//how to peel an orange
}
}

Il y a une différence entre ce à quoi ressemble une déclaration de classe Java normale et ce que nous avons dans notre code ci-dessus. Le mot-clé extend est ce qui est utilisé en Java pour rendre l'héritage possible.

Dans notre exemple ci-dessus, la classe enfant (orange) étend la classe parent (fruit). Par conséquent, l'état et le comportement de la classe fruit peuvent désormais être consultés et modifiés par la classe orange.

L'attribut unique de notre classe orange est identifié avec le nom de variable suprêmes (qui est le nom officiel des petits segments trouvés dans les oranges). C'est là que la spécialisation entre en jeu ; tous les fruits n'ont pas de suprêmes, mais toutes les oranges en ont, il est donc logique de réserver la variable suprêmes à la classe orange.

L'ajout de la méthode de la pelure aux méthodes de consommation et de jus préexistantes est également logique car bien que tous les fruits ne puissent pas être pelés, les oranges sont souvent pelées.

Vous devez garder à l'esprit que si nous n'avions pas l'intention de modifier les méthodes de consommation et de jus existantes, nous n'aurions pas besoin de les inclure dans notre classe d'orange. Les méthodes de la classe orange remplacent toute méthode similaire de la classe fruit. Donc, si tous les fruits étaient consommés et pressés de la même manière, nous n'aurions pas besoin de créer ces méthodes dans la classe orange.

Le rôle que jouent les constructeurs dans l'héritage

Par défaut, les constructeurs de classe parent sont hérités par les classes enfant. Par conséquent, si un objet de classe enfant est créé, cela signifie qu'un objet de classe parent est également créé automatiquement.

Pour revenir à notre exemple, chaque fois qu'un nouvel objet orange est créé, un objet fruit est également créé car une orange est un fruit.

Dans les coulisses, lorsqu'un objet de classe enfant est créé, le constructeur de la classe parent est appelé en premier, suivi du constructeur de la classe enfant. Dans notre classe enfant orange ci-dessus, si un objet orange est créé sans aucun paramètre, notre constructeur de classe fruit par défaut sera appelé, suivi de notre entrepreneur de classe orange par défaut.

La super méthode dans notre constructeur principal ci-dessus est nécessaire car elle spécifie que le constructeur principal - et non le constructeur par défaut - de la classe parent fruit doit être appelé chaque fois qu'un objet orange avec des paramètres est créé.

Vous pouvez maintenant utiliser l'héritage en Java

À partir de cet article, vous avez pu apprendre ce qu'est l'héritage, comment il fonctionne et pourquoi il s'agit d'un concept si important en programmation. Vous pouvez maintenant créer vos relations d'héritage à l'aide du langage de programmation Java. De plus, vous savez maintenant comment contourner la règle d'héritage unique de Java en créant une relation grand-parent.

Crédit d'image: Andreas Wohlfahrt / Pexels

Partager Partager Tweeter E-mail Comment organiser votre code orienté objet avec l'héritage

Obtenir une programmation orientée objet correctement signifie que vous devez connaître l'héritage et savoir comment il peut simplifier le codage et réduire les erreurs.

Lire la suite
Rubriques connexes
  • La programmation
  • Java
  • Programmation orientée objet
A propos de l'auteur Kadeisha Kean(21 articles publiés)

Kadeisha Kean est un développeur de logiciels Full-Stack et un rédacteur technique/technologique. Elle a la capacité distincte de simplifier certains des concepts technologiques les plus complexes; produire du matériel qui peut être facilement compris par tout novice en technologie. Elle est passionnée par l'écriture, le développement de logiciels intéressants et les voyages à travers le monde (à travers des documentaires).

Plus de Kadeisha Kean

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner