1.若是父类构造器调用了被子类重写的方法,且经过子类构造函数建立子类对象,调用了这个父类构造器(不管显示仍是隐式),就会致使父类在构造时实际上调用的是子类覆盖的方法(你须要了解java继承中的初始化机制)。java
public abstract class Father {
public Father() {
display();
}
public void display() {
System.out.println("Father's display");
}
}
public class Son extends Father {
public Son() {
}
public void display() {
System.out.println("Son's display");
}
public static void main(String[] args) {
new Son();
}
}
输出为:框架
Son's displayide
这种机制有优势,不过有时也存在问题。函数
优势:经过继承相同的父类,初始化子类时,父类会调用不一样子类的不一样复写方法,从而实现多态性。
举一个Spring中的例子:
Spring中能够经过为每一个DAO注入一个已经用DataSource初始化的JdbcTemplate,来执行SQL语句。可是每一个DAO都经过