Sub对象继承了Father,Sub就指向了Father中的地址 F1,然而你在sub中new Father();实际就等于又开辟了一个新的Father地址F2,所以输出的时候会多出一个“aaa”

解决方案 »

  1.   

    这完全不是一回事。调用super方法,只是当前对象调用父类的构造方法而已。但是new Father(),则是重新构造了一个父类的对象,则一共构造了两个对象了。
      

  2.   

    楼上说的都对,
    我说的再通俗点,如果你不在Sub的构造类里显示调用super(),JVM会自动给你加上super(),即自动调用父类的无参构造型,所以这里你写那个super()跟不写没差别如果Father里你声明一个有参数的构造型,例如Father(int i),而不声明无参的构造型,这时候你的Sub构造型里就必须自己显示的调用super(int i)了,你感受一下
      

  3.   

    子类构造方法执行体中既没有super调用,也没有this调用,系统将会在执行子类构造方法之前,隐式调用父类无参数的构造方法。
    显示的通过new 调用父类的构造方法前,子类的构造还是会默认通过super去调用父类的构造方法的。
    如果给子类的构造方法中添加上this() 来调用自己的重载的构造方法,这时便不再默认调用父类的构造方法了。
    类的继承和super的使用调用父类构造方法 
      

  4.   

    楼上回答都正确,super特殊关键字
      

  5.   

    那个不是创建一个新的对象吗?super()是调用自己对象的构造方法.