解决方案 »

  1.   

    this指当前对象,应该是输出5吧;
      

  2.   

    Fu f = new Zi();不是通过父类引用指向子类对象吗?如果是5的话不就是父类的对象了吗?
      

  3.   

    f的确是父类引用指向子类对象;
    class Fu
    {
    int num = 5; void show() //第三步,打印,this,指的是当前对象Fu
    {
    System.out.println("Fu show " + this.num);
    }
    }class Zi extends Fu
    {
    int num = 6;
    }public class Test
    {
    public static void main(String[] args)
    {
    Fu f = new Zi();//第一步,调用构造方法,没有,默认;
    f.show();//第二步,调用f的show方法,但Zi本身没有重写Fu的show方法,所以调用Fu的show方法,这是继承; }
    }
      

  4.   

    创建子类对象前,会先创建父类对象class Fu {
    Fu() {
    System.out.println("创建父类对象");
    }
    }class Zi extends Fu {
    Zi() {
    super();  //这句话省不省略,输出结果都一样,省略了,JVM会自动给你加上;子类构造时,会首先调用父类的构造函数
    System.out.println("创建子类对象");
    }
    }public class test {
    public static void main(String[] args) {
    Fu f = new Zi();
    }
    }
      

  5.   

    创建子类对象前,会先创建父类对象class Fu {
    Fu() {
    System.out.println("创建父类对象");
    }
    }class Zi extends Fu {
    Zi() {
    super();  //这句话省不省略,输出结果都一样,省略了,JVM会自动给你加上;子类构造时,会首先调用父类的构造函数
    System.out.println("创建子类对象");
    }
    }public class test {
    public static void main(String[] args) {
    Fu f = new Zi();
    }
    }输出为:创建父类对象
    创建子类对象