Retrieve里面的sendName不是overriding而是overloading

解决方案 »

  1.   

    这是2个不同的函数啊。如果参数一样就不行了。确切来说可能应该说成不能重写好些。最本质的final就是说明用它声明的是唯一的,是不变的。当然你可以
    final int a;然后在构造器里赋值的,但是后面就不能再改变了。
    这个的理解,只需要注意在java中声明是声明,赋值是赋值就容易理解了。
    比如int a=10;int a就是声明,=10是赋值啦!:)
      

  2.   

    overloading是什么? 我认为就是重载呀
    overriding 是覆吗?
      

  3.   

    final method不能被override,而override的method要和父类中的声名一摸一样,你的例子中retrieve里面的sendName和父类中的sendName参数不一样,所以这不是override。准确的说,retrieve里面的sendName也不是overload,因为父类中的sendName是final,所以retrieve里面没有继承这个method,retrieve自己的sendName也称不上overload了。
      

  4.   

    chenyuan_tongji(codeguru) 描述的很正确
      

  5.   

    to chenyuan_tongji(codeguru) && fastmask(我心烦) 
    有异议:
    事实上final函数已经被派生类所继承,但不可override.
    class a{
    final int f(){return 1;}
    }
    public class Test extends a{
    int f(int i){return i;}
    public int aMethod()
          {
    System.out.println(super.f());//1
    System.out.println(this.f());//1
    System.out.println(f(5));//5
    return 1; 
    }
    public static void main (String args[])

    Test test = new Test(); 
    test.aMethod(); 
         }
    }