为什么  父类如果有  proctected 的方法 假如 为 proctected void fo(){}子类 如果 覆盖fo()的子类的fo为什么不能是
public static void fo()
{
}
也就是 为什么不能用static方法覆盖 proctected 的方法说明原因/../.........谢谢

解决方案 »

  1.   

    忘了 说 了 会提示异常the static method cannot hide instance method from p当然这里假设父类是 p
      

  2.   

    会引起歧义吧
    instance.staticMethod()
    instance.nonStaticMethod()
    都是可以的那你instance.fo()的时候就没办法分辨call的是static的那个还是非static的那个了
      

  3.   


    也就是说是 一种java语言规范?????????
      

  4.   

    但 想 通过
    fo.proctect()直接调用而不创建对象为什么不行呢??这样规范好诡异 啊!!
      

  5.   

    如果这样可以的话,等于修改了访问方式了。
    试想,原先proctected void fo(){}是为了让你继承使用
    你当然可以覆盖他,但是原来他是要你用new来调用了,现在变成可以直接调用了
    如果你这个子类再有子类,那么静态方法是不能被覆盖的,这样你的子类的子类和最初的父类就脱节了。
    如果是这样的话,那么无疑又增加了继承的复杂性
      

  6.   

    子类重写父类的方法中有10种要求,其中二条是1、子类不能用 静态方法 重写 父类的非静态方法。  你犯的就是这个错误。与protected关键字无关2、同理 子类不能用 非静态方法 重写 父类的静态方法1、2即是说,子类要重写父类的方法,要么都是静态的,要么都是非静态的
      

  7.   

    另外还有一点,虽然你没犯这个错,但是也要小心
    你父类的代码访问权限是 protected的,子类重写后是public的,这样肯定没问题但是要注意,子类重写父类的方法,子类方法的访问权限 >= 父类的方法的访问权限
      

  8.   

    notlogin能否把那10条要求发上来 Google了没有啊