new出来的对象是son,在内存里的字节码实际应该也是son,只不过是将son的引用保存在了father引用里。
因此测试一下
father instanceof Son 输出应该是true

解决方案 »

  1.   

    我是这么理解的  不知道对不对啊  你在主函数里面是用子类实例化的  这个father对象实际是子类的对象  子类重写了父类的eat方法  这种写法是用子类实例化父类  这个对象实际是子类的对象  可以调用子类的方法  也可以调用父类的方法  对于eat方法因为被子类重写  虽然在调用eat方法时提示他是父类的方法,但被调用的还是子类的重写后的eat方法  子类eat方法里调用了study方法 你的标题也说明了这个问题  父类引用指向子类对象  子类对象!  我认为不在于前面是谁的引用  在于后面new的是谁的对象  new Son的对象那调用的就是Son的对象 
      

  2.   

    不可以,study方法没有在父类中声明!
    如果想调用,需要向下转型!
      

  3.   

    是在Son的eat方法里调用了study,然后Father father = new Son(); father.eat();