final修饰成员方法的问题,不能被重载?我怎么可以重载

书上这么说,不能被重载,你看这个例子,我在ecilpse下编译无错误,已经重载了。
public class Dffgfggfrrhh
{
public Dffgfggfrrhh()
{}
final void meng(double i)
{}
final void meng(int k)
{}
public static void main(String args[])
{
new Dffgfggfrrhh();
}
}
class wersdf extends Dffgfggfrrhh
{
final void meng(int k, String n)
{}
}

你对final修饰方法的理解不对。【金城杞人】的回答是正解。
在Java中,某个方法被修饰为final,即表示该方法不能被其子类覆写(Override)。也就是说如果A类定义了final void a(int x){ },则:class B extends A{ void a(int n){} }中的void a(int n){} 是不被允许的,将产生一个语法错误,Eclipse也不例外。
在你示例中wersdr类定义的meng(int k,String n)方法并没有覆盖父类中的任何一个方法,所以自然不会出错。若改成这样就不被允许了:
class wersdf extends Dffgfggfrrhh{
final void meng(int k) { } //覆盖
}
重载:发生在一个类中,是指类中的同名但不同参的方法;
覆盖:发生在父类与子类之间,是指子类中与父类同名同参的方法。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-10
不能override,不是overload
第2个回答  2012-10-10
你这个不叫覆盖。顶多算从新定义了一个方法
第3个回答  2012-10-10
以上的那个题目我也验过了,是对的
相似回答