Jeśli w hierarchii klas metoda klasy dziedziczącej ma taką samą nazwę i sygnaturę typu jak metoda klasy dziedziczonej, to zwykło się mówić, iż metoda klasy dziedziczącej przesłania odpowiednią metodę klasy dziedziczonej. Wywołanie takiej metody dla instancji klasy dziedziczącej zawsze spowoduje wykonanie wersji zdefiniowanej w klasie dziedziczącej. Wersja zdefiniowana w klasie dziedziczonej zostanie ukryta. Gdy jednak zechcemy wywołać ukrytą wersję metody z klasy dziedziczonej w granicach klasy dziedziczącej, należy zastosować słowo kluczowe "super". Poniższy przykład prezentuje proste przesłanianie i wykorzystywanie słowa kluczowego "super".
public class ClassA {
private int width;
private int height;
ClassA(int w, int h) {
this.width = w;
this.height = h;
}
public int[] getProperties() {
return new int[] {width, height};
}
}
public class ClassB extends ClassA {
private int depth;
ClassB(int w, int h, int d) {
super(w, h);
this.depth = d;
}
public int[] getProperties() {
int[] p = super.getProperties();
return new int[] {p[0], p[1], depth};
}
}
public class ClassC {
public static void main(String args[]) {
ClassA a = new ClassA(10, 20);
int[] propertiesA = a.getProperties();
for (int i : propertiesA) {
System.out.println("ClassA : " + i);
}
ClassB b = new ClassB(propertiesA[0], propertiesA[1], 30);
int[] propertiesB = b.getProperties();
for (int i : propertiesB) {
System.out.println("ClassB : " + i);
}
}
}