我构建了一个程序来测试Java继承,有几个类:
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.";
}
}
当我运行此代码时:
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");
}
}
我得到以下输出:
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.
为什么用参数少了构造函数构造的对象有这么多重复?
谢谢
答案 0 :(得分:1)
随着Chien
扩展Mammifere
和Mamifere
扩展Animal
:当您想实例化一个Chien
时,它也会像原样构建一个Mamifere
超级类型,因此它也建立了Animal
,因为它也是超级类型
desc
构造函数启动的Chien
方法desc
构造函数启动的Mamifere
方法desc
构造函数发起的Animal
方法 Homme