class Animal {
private int i =0;
public Animal(){
System.out.println("animal is running!");
}
public Animal(int a){
this();
System.out.println("an animal ia running!");
}
public void eat(){
System.out.println("eat meat !");
}
}
public class Dog extends Animal{
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat();
}
public Dog(){
super(8);
System.out.println("dog is running!");
}
public void eat(){
super.eat();
System.out.println("eat bone!");
}
}为什么运行结果是:
animal is running!
an animal ia running!
dog is running!
eat meat !
eat bone!我的预期结果是:
animal is running!
animal is running!
an animal ia running!
dog is running!
eat meat !
eat bone! 思路:main开始执行-->执行new Dog()-->Dog有父类执行父类无参构造,打印出animal is running!(父类构造器执行完毕)-->执行子类构造器-->调用父类有参构造器-->调用父类无参构造器,打印animal is running!-->父类有参构造器,打印an animal ia running!-->子类构造器打印dog is running!(子类构造器执行完毕)-->执行dog.eat()-->子类自身有eat方法,执行Dog类的eat方法-->调用父类的eat方法,打印eat meat !-->打印eat bone!(Dog类eat方法执行完毕)
private int i =0;
public Animal(){
System.out.println("animal is running!");
}
public Animal(int a){
this();
System.out.println("an animal ia running!");
}
public void eat(){
System.out.println("eat meat !");
}
}
public class Dog extends Animal{
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat();
}
public Dog(){
super(8);
System.out.println("dog is running!");
}
public void eat(){
super.eat();
System.out.println("eat bone!");
}
}为什么运行结果是:
animal is running!
an animal ia running!
dog is running!
eat meat !
eat bone!我的预期结果是:
animal is running!
animal is running!
an animal ia running!
dog is running!
eat meat !
eat bone! 思路:main开始执行-->执行new Dog()-->Dog有父类执行父类无参构造,打印出animal is running!(父类构造器执行完毕)-->执行子类构造器-->调用父类有参构造器-->调用父类无参构造器,打印animal is running!-->父类有参构造器,打印an animal ia running!-->子类构造器打印dog is running!(子类构造器执行完毕)-->执行dog.eat()-->子类自身有eat方法,执行Dog类的eat方法-->调用父类的eat方法,打印eat meat !-->打印eat bone!(Dog类eat方法执行完毕)
Dog有父类执行父类无参构造,打印出animal is running!(父类构造器执行完毕)-->执行子类构造器-->调用父类有参构造器-->调用父类无参构造器,打印animal is running!-->父类有参构造器,打印an animal ia running!-->子类构造器打印dog is running!(子类构造器执行完毕)-->执行dog.eat()-->子类自身有eat方法,执行Dog类的eat方法-->调用父类的eat方法,打印eat meat !-->打印eat bone!(Dog类eat方法执行完毕)明白??论坛大牛这么多 这个问题没人知道??????????