I built a program in order to test Java inheritance, there are several classes:
public class Animal {
String name = "";
String kind = "";
public Animal() {
System.out.println(desc());
}
public Animal(String name) {
this.name = name;
System.out.println(desc());
}
String desc() {
if (name == "") {
return "Je suis un animal.";
} else {
return "Je suis un animal de nom " + name + ".";
}
}
}
public class Mamifere extends Animal {
public Mamifere() {
System.out.println(desc());
}
public Mamifere(String name) {
this.name = name;
System.out.println(desc());
}
String desc() {
return super.desc() + " Je suis un mamifère.";
}
}
public class Homme extends Mamifere {
public Homme() {
System.out.println(desc());
}
public Homme(String name) {
this.name = name;
System.out.println(desc());
}
String desc() {
return super.desc() + " Je suis un homme.";
}
}
public class Chien extends Mamifere {
public Chien() {
System.out.println(desc());
}
public Chien(String name) {
this.name = name;
System.out.println(desc());
}
String desc() {
return super.desc() + " Je suis un chien.";
}
}
When I run this code:
public class TestAnimal {
public static void main(String[] args) {
Animal[] animaux = new Animal[5];
animaux[0] = new Animal("Truc");
animaux[1] = new Animal();
animaux[2] = new Chien("Medor");
animaux[3] = new Homme();
animaux[4] = new Homme("Robert");
}
}
I get this output:
Je suis un animal de nom Truc.
Je suis un animal.
Je suis un animal. Je suis un mamifère. Je suis un chien.
Je suis un animal. Je suis un mamifère. Je suis un chien.
Je suis un animal de nom Medor. Je suis un mamifère. Je suis un chien.
Je suis un animal. Je suis un mamifère. Je suis un homme.
Je suis un animal. Je suis un mamifère. Je suis un homme.
Je suis un animal. Je suis un mamifère. Je suis un homme.
Je suis un animal. Je suis un mamifère. Je suis un homme.
Je suis un animal. Je suis un mamifère. Je suis un homme.
Je suis un animal de nom Robert. Je suis un mamifère. Je suis un homme.
Why is there so many repetitions for the objects constructed from the argument less constructor ?