Java >> Tutoriel Java >  >> Java

Héritage en Java avec exemple

Comme nous le savons,
Java est un langage de programmation orienté objet (NOTEZ qu'il ne s'agit pas d'un langage POO pur car il prend en charge les types de données primitifs tels que int, float, double, etc.) L'héritage est un concept important de la programmation orientée objet langage tel qu'il nous offre le mécanisme qui permet à une classe d'hériter des fonctionnalités d'une autre classe, la classe héritant des fonctionnalités est appelée classe dérivée ou classe héritée tandis que la classe dont les fonctionnalités sont héritées est appelée classe de base ou Super Classe .

REMARQUE : Tous les membres publics et protégés de la classe de base deviennent les membres publics et protégés de la classe dérivée.

L'utilisation principale de l'héritage est de permettre la réutilisation du code déjà écrit. Ce qui aide à réduire le nombre de lignes de codes et la confusion du programmeur.

Mot clé Java : extend est utilisé pour hériter des fonctionnalités d'une classe à une autre classe.

Syntaxe d'héritage :

class Base 
{	/*Body of the Base Class*/		}
class Derived extends Base
{	/* Body of the Derived Class */		}

Considérez le programme utilisant l'héritage :

import java.util.Scanner;
class Headquarters
{
	int totalemployees; // Data Member 1
	String cityname; // Data Member 2
	Scanner KB=new Scanner(System.in);
	void getDetails()
	{
		System.out.println("Enter City Where Headquarters is Sitiuated :");
		cityname=KB.nextLine();
		System.out.println("Enter Total Number of Employees in Headquarters");
		totalemployees=KB.nextInt();
	}

	void showDetails()
	{
		System.out.println("Company Headquarters is Sitiuated in "+cityname+" and has "+totalemployees+" Employees");
	}
}

class Mainbranch extends Headquarters
{
	void getDetails()
	{
		System.out.println("Enter City Where Main Branch is Sitiuated");
		cityname=KB.nextLine();
		System.out.println("Enter The Total Number of Employees In Main Branch");
		totalemployees=KB.nextInt();
	}

	void showDetails()
	{
		System.out.println("Company Main Branch is Sitiuated in "+cityname+" and has "+totalemployees+" Employees");
	}
}

class Company
{
	public static void main(String args[])
	{
		Headquarters H=new Headquarters();
		H.getDetails();
		H.showDetails();	
		Mainbranch M=new Mainbranch();
		M.getDetails(); // Method Calling by Object M works correctly as the features of the HeadQuarters are inherited to Mainbranch
		M.showDetails();// Note That Inheritance provides reusability of code as observed in the above program
	}
}

/*Ce programme met également en évidence les concepts de remplacement de méthode */

Sortie pour l'héritage unique :

Enter City Where Headquarters is Sitiuated :
Delhi
Enter Total Number of Employees in Headquarters
1500
Company Headquarters is Sitiuated in Delhi and has 1500 Employees
Enter City Where Main Branch is Sitiuated
Indore
Enter The Total Number of Employees In Main Branch
500
Company Main Branch is Sitiuated in Indore and has 500 Employees
Publicité

Mais, si nous utilisons le même exemple que ci-dessus, avec des membres de données privés, nous recevrons un message d'erreur.

Extrait du siège :

class Headquarters
{
	private int totalemployees; // Data Member 1
	private String cityname; // Data Member 2
	Scanner KB=new Scanner(System.in);

	void getDetails()
	{
		System.out.println("Enter City Where Headquarters is Sitiuated:");
		cityname=KB.nextLine();
		System.out.println("Enter Total Number of Employees in Headquarters");
		totalemployees=KB.nextInt();
	}

	void showDetails()
	{
		System.out.println("Company Headquarters is Sitiuated in "+cityname+" and has "+totalemployees+" Employees");
	}
}

Message d'erreur :

Company.java:26: error: cityname has private access in Headquarters
                cityname=KB.nextLine();
                ^
Company.java:28: error: totalemployees has private access in Headquarters
                totalemployees=KB.nextInt();
                ^
Company.java:32: error: cityname has private access in Headquarters
                System.out.println("Company Main Branch is Sitiuated in "+cityname+" and has "+totalemployees+" Employees");
                                                                          ^
Company.java:32: error: totalemployees has private access in Headquarters
                System.out.println("Company Main Branch is Sitiuated in "+cityname+" and has "+totalemployees+" Employees");
                                                                                               ^
4 errors */

Ces messages d'erreur indiquent clairement que la méthode des données privées ne peut pas être remplacée.

L'héritage en Java est divisé en plusieurs types :

  1. Héritage unique  :Dans l'héritage unique, il n'y a qu'une seule classe dérivée/classe héritée et une super classe/classe de base.
  2. Héritage à plusieurs niveaux :Dans l'héritage à plusieurs niveaux, il existe une classe de base qui a une classe dérivée et en outre, il existe à nouveau une nouvelle classe dérivée, dérivée de la classe dérivée précédente, son analogie est la même pour la relation parent à enfant à petit-enfant, la classe petit-enfant ne peut pas hériter des caractéristiques de classe parent directement.
  3. Héritage hiérarchique  :Dans l'héritage hiérarchique, une super classe agit comme classe de base pour plusieurs classes dérivées.

Balise Java