Latest web development tutorials

héritage Java

L'héritage est une pierre angulaire de la technologie Java de programmation orientée objet, car il permet la création de classes de niveau hiérarchique. L'héritage peut être compris comme un objet pour obtenir les propriétés d'un autre objet du processus.

Si la classe parent est une classe A classe B, classe B et la classe C est la classe parente, et nous appelons également C est une sous-classe de A, de catégorie C de la classe A est héritée. En Java, l'héritage de classe unique héritage, qui est, une sous-classe peut avoir une seule classe parente

Deux mots clés le plus couramment utilisé est l'héritage étend et met en œuvre.

Tant l'utilisation de mots clés et de déterminer si un objet est un autre objet IS-A (a) relation.

En utilisant ces deux mots-clés, nous pouvons réaliser un objet pour obtenir les propriétés d'un autre objet.

Toutes les classes Java sont héritées par la classe java.lang.Object, de sorte que la classe Object est l'ancêtre de toutes les classes, et en plus d'objets, toutes les classes doivent avoir une classe parente.

Par-dessus-étend les mots clés peuvent déclarer un hérite de la classe d'une autre classe, la forme générale est la suivante:

// A.java
public class A {
    private int i;
    protected int j;
 
    public void func() {
 
    }
}
 
// B.java
public class B extends A {
}

L'extrait de code ci-dessus montre, B hérite de A, B est une sous-classe de A. Et A est une sous-classe de l'objet, il ne peut pas être déclaré explicitement.

Comme une instance sous-classe B de A a toutes les variables membres, mais pour les membres de la variable privée B, mais ne pas avoir accès, ce qui garantit l'encapsulation des A.


IS-une relation

C'EST-A: Un objet est une classification autre objet.

Voici le mot-clé étend l'héritage d'implémentation.

public class Animal{
}

public class Mammal extends Animal{
}

public class Reptile extends Animal{
}

public class Dog extends Mammal{
}

Sur la base de l'exemple ci-dessus, la déclaration suivante est vraie:

  • classe Animal est le parent classe Mammifère de classe.
  • classe Animal est le parent classe Reptile de classe.
  • Mammifère et classe Reptile est une sous-classe de la classe des animaux.
  • classe Dog est à la fois une sous-classe de la classe des mammifères est une sous-classe de la classe des animaux.

Analyse IS-une relation dans l'exemple ci-dessus, comme suit:

  • Mammifère EST-A des animaux
  • Reptile EST-A des animaux
  • Chien EST-A Mammifère

Par conséquent: Chien EST-A des animaux

En utilisant le mot - clé étend, sous - classes héritent de toutes les méthodes de la classe parent et les propriétés, mais ne peuvent pas utiliser des méthodes privées (privées) et les propriétés.

Nous utilisons l'opérateur instanceof peut déterminer Mammifère EST-A des animaux

Exemples

public class Dog extends Mammal{

   public static void main(String args[]){

      Animal a = new Animal();
      Mammal m = new Mammal();
      Dog d = new Dog();

      System.out.println(m instanceof Animal);
      System.out.println(d instanceof Mammal);
      System.out.println(d instanceof Animal);
   }
}

Les exemples ci-dessus les résultats compilés sont les suivants:

true
true
true

Après l' introduction de mot - clé extends, nous allons voir comment utiliser le mot - clé implements pour indiquer l'IS-une relation.

Met en œuvre mot - clé dans le cas de l' interface de l' héritage de classe, cette situation ne peut pas utiliser le mot - clé étend.

Exemples

public interface Animal {}

public class Mammal implements Animal{
}

public class Dog extends Mammal{
}

mot-clé instanceof

Vous pouvez utiliser l'opérateur instanceof pour tester si des mammifères et de l' objet de chien est une instance de la classe Animal.

interface Animal{}

class Mammal implements Animal{}

public class Dog extends Mammal{
   public static void main(String args[]){

      Mammal m = new Mammal();
      Dog d = new Dog();

      System.out.println(m instanceof Animal);
      System.out.println(d instanceof Mammal);
      System.out.println(d instanceof Animal);
   }
} 

Les exemples ci-dessus les résultats compilés sont les suivants:

true
true
true

HAS-une relation

HAS-A affiliation au nom de la classe et de ses membres. Cela permet de réutiliser le code et réduire les erreurs de code.

exemple

public class Vehicle{}
public class Speed{}
public class Van extends Vehicle{
	private Speed sp;
} 

Van classe et classe de vitesse est HAS-une relation (Van a une vitesse), de sorte que vous aurez pas tout le code est collé dans la classe Van Speed ​​dans la classe et la classe de vitesse peut être réutilisé dans de multiples applications.

En fonctionnalités orientées objet, l'utilisateur n'a pas besoin de se soucier de la façon dont les classes internes.

les détails de mise en œuvre de la classe Van cachés à l'utilisateur, de sorte que seuls les utilisateurs ont besoin de savoir comment appeler Van classe pour terminer une certaine fonction, sans avoir à connaître Van classe est de le faire eux-mêmes ou appeler d'autres classes pour faire le travail.

Java ne supporte que l'héritage unique, ce qui signifie qu'une classe ne peut pas hériter de plusieurs classes.

La pratique suivante est pas légal:

public class extends Animal, Mammal{} 

Java ne supporte que l'héritage unique (héritage et classe de base abstraite), mais on peut utiliser l'interface pour mettre en œuvre (interfaces multiples héritage pour atteindre), la structure de script tels que:

public class Apple extends Fruit implements Fruit1, Fruit2{}

En règle générale, nous héritons de la classe de base et classe abstraite avec le mot-clé extends implémente l'interface avec l'héritage des outils mot-clé class.