因为父类根本不知道是谁要继承自己,所以一般情况下不能调用子类,但还是有特殊的情况.
package com.skymr.learn;
/**
* 父类调子类方法
* @author skymr
*
*/
public class SubParentTest extends ParentClass{
private int i = 222;
public void display(){
System.out.println(i);
}
public static void main(String[] args){
new SubParentTest();
}
}
class ParentClass{
private int i = 2;
public ParentClass(){
this.display();
}
public void display(){
System.out.println(i);
}
}
结果输出 0,为什么呢?
new SubParentTest()的时候,先调用父类构造器ParentClass(),然后执行this.display()时,this指向的是SubParentTest,所以调用子类的display方法,但此时的i是父类的还是自己的呢,若是父类的,应该输出222,若是自己的,就是自己的,因为此时父类构造器还没有执行完成,子类的构造器还没有执行,所以i=0