1, 父类的构造器方法中不能调用能够被子类重写的方法.
分析:
当初始化一个子类时, 首先要初始化父类, 即调用父类的构造方法;
如果父类的构造方法中调用了可被重写的其它方法, 那么此时调用的其实是该子类中重写的方法;
因此子类还没有初始化, 所以可能会造成一些问题.
示例代码如下:
父类:
public class Father1 { public Father1() { overRide1(); } public void overRide1(){ System.out.println("父类的成员方法.................................."); } }
子类:
public class Son1 extends Father1 { private final Date date; public Son1() { date = new Date(); } @Override public void overRide1() { System.out.println(date); } public static void main(String[] args) { Son1 son1 = new Son1(); son1.overRide1(); } }
如果运行子类的main方法, 那么控制台的输出的结果其实是:
null
Mon Apr 10 12:55:48 CST 2017
说明父类初始化时, 构造方法中调用的是子类的overRide1方法;