你调用的是f1()方法啊,继承后还是调用Hello的f2方法嘛~

解决方案 »

  1.   

    static函数不存在override哪来多态?
      

  2.   

    static 方法不是动态绑定的,而是在编译时就绑定了的!
      

  3.   

    Hi继承了Hello的f1(),怎么调用Hi的f1()?
      

  4.   

    哇,刚刚才看到1条回复哎,原来跟STATIC有关,又愚蠢了一八,俺试试!谢了!
      

  5.   

    static方法是类的,不是某个实例的(因此没有this指针,不可能执行时判断类型),所以编译时就根据声明的类型决定了调用那个方法。
      

  6.   

    一句话:静态方法没有多态。
    理由:编译器不会为静态方法秘密传递this指针,多态就是根据这个this指针来实现的
    要理解这些,需要深刻理解多态是如何实现的,以及静态方法
    学习java就不一定非要追求这些细节了,Thingking in java都没有讲述这些细节,知道这个结论就可以了
      

  7.   

    当类Hi在继承类Hello的时候,他覆盖了Hello中的f2方法,所以对于继承Hi类的H3
    来说,他说看到的函数f2是(如果没覆盖Hello中的方法,那么H3继承的就是Hello中的f2方法)Hi类中的f2函数.不知道我说清楚没有。多交流。
      

  8.   

    更正一下我上面的一句话:
    static函数不存在RTTI(存在override)