Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Héritage Java

Héritage Java

Dans ce didacticiel, nous allons découvrir l'héritage Java et ses types à l'aide d'exemples.

L'héritage est l'une des fonctionnalités clés de la POO qui nous permet de créer une nouvelle classe à partir d'une classe existante.

La nouvelle classe créée est appelée sous-classe (classe enfant ou dérivée) et la classe existante à partir de laquelle la classe enfant est dérivée est appelée superclasse (classe parent ou de base).

Le extends mot-clé est utilisé pour effectuer l'héritage en Java. Par exemple,

class Animal {
  // methods and fields
}

// use of extends keyword
// to perform inheritance
class Dog extends Animal {

  // methods and fields of Animal
  // methods and fields of Dog
}

Dans l'exemple ci-dessus, le Chien la classe est créée en héritant des méthodes et des champs de Animal classe.

Tiens, Chien est la sous-classe et Animal est la superclasse.

Exemple 1 :Héritage Java

class Animal {

  // field and method of the parent class
  String name;
  public void eat() {
    System.out.println("I can eat");
  }
}

// inherit from Animal
class Dog extends Animal {

  // new method in subclass
  public void display() {
    System.out.println("My name is " + name);
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // access field of superclass
    labrador.name = "Rohu";
    labrador.display();

    // call method of superclass
    // using object of subclass
    labrador.eat();

  }
}

Sortie

My name is Rohu
I can eat

Dans l'exemple ci-dessus, nous avons dérivé une sous-classe Chien de la superclasse Animal . Remarquez les déclarations,

labrador.name = "Rohu";

labrador.eat();

Ici, labrador est un objet de Chien . Cependant, nom et eat() sont les membres de l'Animal classe.

Depuis Chien hérite du champ et de la méthode de Animal , nous pouvons accéder au champ et à la méthode en utilisant l'objet du Chien .

est-une relation

En Java, l'héritage est un est-un relation. Autrement dit, nous n'utilisons l'héritage que s'il existe une relation is-a entre deux classes. Par exemple,

  • Voiture est un Véhicule
  • Orange est un Fruit
  • Chirurgien est un docteur
  • Chien est un Animal

Ici, Voiture peut hériter de Véhicule , Orange peut hériter de Fruit , et ainsi de suite.

Remplacement de méthode dans l'héritage Java

Dans Exemple 1 , on voit que l'objet de la sous-classe peut accéder à la méthode de la super-classe.

Cependant, si la même méthode est présente à la fois dans la superclasse et la sous-classe, que se passera-t-il ?

Dans ce cas, la méthode de la sous-classe remplace la méthode de la superclasse. Ce concept est connu sous le nom de remplacement de méthode en Java.

Exemple 2 :remplacement de méthode dans l'héritage Java

class Animal {

  // method in the superclass
  public void eat() {
    System.out.println("I can eat");
  }
}

// Dog inherits Animal
class Dog extends Animal {

  // overriding the eat() method
  @Override
  public void eat() {
    System.out.println("I eat dog food");
  }

  // new method in subclass
  public void bark() {
    System.out.println("I can bark");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // call the eat() method
    labrador.eat();
    labrador.bark();
  }
}

Sortie

I eat dog food
I can bark

Dans l'exemple ci-dessus, le eat() est présente à la fois dans la superclasse Animal et la sous-classe Chien .

Ici, nous avons créé un objet labrador de chien .

Maintenant, lorsque nous appelons eat() en utilisant l'objet labrador , la méthode à l'intérieur de Chien est appelé. En effet, la méthode à l'intérieur de la classe dérivée remplace la méthode à l'intérieur de la classe de base.

C'est ce qu'on appelle le remplacement de méthode. Pour en savoir plus, consultez Remplacement de méthode Java.

Remarque :Nous avons utilisé le @Override annotation pour indiquer au compilateur que nous redéfinissons une méthode. Cependant, l'annotation n'est pas obligatoire. Pour en savoir plus, visitez Java Annotations.

super mot-clé dans l'héritage Java

Précédemment, nous avons vu que la même méthode dans la sous-classe remplace la méthode dans la superclasse.

Dans une telle situation, le super mot clé est utilisé pour appeler la méthode de la classe parent à partir de la méthode de la classe enfant.

Exemple 3 :super mot-clé dans l'héritage

class Animal {

  // method in the superclass
  public void eat() {
    System.out.println("I can eat");
  }
}

// Dog inherits Animal
class Dog extends Animal {

  // overriding the eat() method
  @Override
  public void eat() {

    // call method of superclass
    super.eat();
    System.out.println("I eat dog food");
  }

  // new method in subclass
  public void bark() {
    System.out.println("I can bark");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // call the eat() method
    labrador.eat();
    labrador.bark();
  }
}

Sortie

I can eat
I eat dog food
I can bark 

Dans l'exemple ci-dessus, le eat() est présente à la fois dans la classe de base Animal et la classe dérivée Chien . Remarquez la déclaration,

super.eat();

Ici, le super mot clé est utilisé pour appeler le eat() méthode présente dans la superclasse.

On peut aussi utiliser le super mot-clé pour appeler le constructeur de la superclasse à partir du constructeur de la sous-classe. Pour en savoir plus, visitez le site Java super keyword.

Membres protégés par héritage

En Java, si une classe inclut protected champs et méthodes, alors ces champs et méthodes sont accessibles depuis la sous-classe de la classe.

Exemple 4 :Membres protégés par héritage

class Animal {
  protected String name;

  protected void display() {
    System.out.println("I am an animal.");
  }
}

class Dog extends Animal {

  public void getInfo() {
    System.out.println("My name is " + name);
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // access protected field and method
    // using the object of subclass
    labrador.name = "Rocky";
    labrador.display();

    labrador.getInfo();
  }
}

Sortie

I am an animal.
My name is Rocky

Dans l'exemple ci-dessus, nous avons créé une classe nommée Animal. La classe comprend un champ protégé :nom et une méthode :display() .

Nous avons hérité du Chien la classe hérite de Animal . Remarquez la déclaration,

labrador.name = "Rocky";
labrador.display();

Ici, nous pouvons accéder au champ protégé et à la méthode de la superclasse en utilisant le labrador objet de la sous-classe.

Pourquoi utiliser l'héritage ?

  • L'utilisation la plus importante de l'héritage en Java est la réutilisation du code. Le code présent dans la classe parent peut être directement utilisé par la classe enfant.
  • Le remplacement de méthode est également connu sous le nom de polymorphisme d'exécution. Par conséquent, nous pouvons réaliser le polymorphisme en Java à l'aide de l'héritage.

Types d'héritage

Il existe cinq types d'héritage.

1. Héritage unique

Dans l'héritage unique, une seule sous-classe s'étend à partir d'une seule superclasse. Par exemple,

2. Héritage à plusieurs niveaux

Dans l'héritage à plusieurs niveaux, une sous-classe s'étend à partir d'une super-classe, puis la même sous-classe agit comme une super-classe pour une autre classe. Par exemple,

3. Héritage hiérarchique

Dans l'héritage hiérarchique, plusieurs sous-classes s'étendent à partir d'une seule superclasse. Par exemple,

4. Héritage multiple

Dans l'héritage multiple, une seule sous-classe s'étend de plusieurs superclasses. Par exemple,

Remarque :Java ne prend pas en charge l'héritage multiple. Cependant, nous pouvons réaliser un héritage multiple en utilisant des interfaces. Pour en savoir plus, consultez Java implémente l'héritage multiple.

5. Héritage hybride

L'héritage hybride est une combinaison de deux ou plusieurs types d'héritage. Par exemple,

Ici, nous avons combiné l'héritage hiérarchique et multiple pour former un héritage hybride.


Java

  1. Mot-clé Java final
  2. Opérateur instanceof Java
  3. Classe statique imbriquée Java
  4. Classe anonyme Java
  5. Classe Java Singleton
  6. Réflexion Java
  7. Classe Java ObjectOutputStream
  8. Génériques Java
  9. Classe de fichier Java