Java Language Héritage


Exemple

Avec l'utilisation du mot extends clé extend parmi les classes, toutes les propriétés de la super-classe (également appelée classe parent ou classe de base ) sont présentes dans la sous-classe (également appelée classe enfant ou classe dérivée ).

public class BaseClass {

    public void baseMethod(){
        System.out.println("Doing base class stuff");
    }
}

public class SubClass extends BaseClass {

}

Les instances de SubClass ont hérité de la méthode baseMethod() :

SubClass s = new SubClass();
s.baseMethod();  //Valid, prints "Doing base class stuff"

Un contenu supplémentaire peut être ajouté à une sous-classe. Cela permet des fonctionnalités supplémentaires dans la sous-classe sans aucune modification de la classe de base ou de toute autre sous-classe de cette même classe de base:

public class Subclass2 extends BaseClass {

    public void anotherMethod() {
        System.out.println("Doing subclass2 stuff");
    }
}

Subclass2 s2 = new Subclass2();
s2.baseMethod(); //Still valid , prints "Doing base class stuff"
s2.anotherMethod(); //Also valid, prints "Doing subclass2 stuff" 

Les champs sont également hérités:

public class BaseClassWithField {

    public int x;

}

public class SubClassWithField extends BaseClassWithField {

    public SubClassWithField(int x) {
        this.x = x; //Can access fields
    }
}

private champs et méthodes private existent toujours dans la sous-classe, mais ne sont pas accessibles:

public class BaseClassWithPrivateField {

    private int x = 5;

    public int getX() {
        return x;
    }
}

public class SubClassInheritsPrivateField extends BaseClassWithPrivateField {

    public void printX() {
        System.out.println(x); //Illegal, can't access private field x
        System.out.println(getX()); //Legal, prints 5
    }
}

SubClassInheritsPrivateField s = new SubClassInheritsPrivateField();
int x = s.getX(); //x will have a value of 5.

En Java, chaque classe peut s'étendre au maximum sur une autre classe.

public class A{}
public class B{}
public class ExtendsTwoClasses extends A, B {} //Illegal

Ceci est connu sous le nom d'héritage multiple, et bien qu'il soit légal dans certaines langues, Java ne le permet pas avec les classes.

En conséquence, chaque classe possède une chaîne ancestrale non ramifiée de classes menant à Object , à partir de laquelle toutes les classes descendent.