现在的现象是子类继承父类。然后重写了父类的一个方法,父类的构造函数中调用了父类的这个方法,那么当子类实例化连带父类实例化时调用的就是子类重写的方法。
代码:
父类:
public class Father {
public Father() {
System.out.println("基类构造函数{");
show();
new a();
System.out.println("}");
}
public void show() {
System.out.println("基类----show");
}
public class a {
public a() {
System.out.println("inner class 构造函数");
}
}
}
子类:
public class Child extends Father{
public static void main(String[] arf){
new Father().show();
System.out.println("--------------------我是分割线-------------------------");
new Child().show();
System.out.println("--------------------我是分割线-------------------------");
new Father().show();
}
public Child(){
System.out.println("子类构造函数");
}
public void show(){
System.out.println("extend基类-----show");
}
}
运行结果:
--------------------我是分割线-------------------------
基类构造函数{
基类----show
inner class 构造函数
}
基类----show
--------------------我是分割线-------------------------
基类构造函数{
extend基类-----show
inner class 构造函数
}
子类构造函数
extend基类-----show
--------------------我是分割线-------------------------
基类构造函数{
基类----show
inner class 构造函数
}
基类----show
--------------------我是分割线-------------------------
从运行结果上可以看出来运行的顺序。
特别,运行结果中间部分构造函数中,调用的show()是子类的重写的方法,即子类的方法。
原文:http://www.cnblogs.com/xiufengd/p/4701488.html