1. 父类构造器调用普通方法,子类重写该方法:此时初始化子类,默认会初始化父类,但是父类调用的却是子类重载后的方法
package com.yjq.cn.polymorphism;
public class AnimalConstuctors {
public static void main(String[] args) {
new Dog(4);
}
}
class Animal {
public Animal() {
System.out.println("animal before eat");
eat(); //构造过程中引用了eat方法
System.out.println("animal after eat");
}
void eat() {
System.out.println("Animal.eat()");
}
}
class Dog extends Animal {
private int num = 1;
public Dog() {}
public Dog(int num) {
this.num = num;
System.out.println("Dog.Dog(), num=" + num);
}
void eat() {
System.out.println("Dog.eat() ,num=" + num);
}
}
//output
animal before eat
Dog.eat() ,num=0
animal after eat
Dog.Dog(), num=4