日期:2014-05-20  浏览次数:20720 次

方法的重载与重写,抽象类的实现问题
1.方法重写的时候是否需要更父类具有完全一样的访问控制权限和返回类型,比如一个父类的方法定义为
 a(int m,int n),那么子类在重写的时候可否写成 public int a(int m,int n)?

2.方法重载时,除了方法名、参数个数和参数类型相同外,是否需要完全相同,例如一个类中
float fun(float s),public static float fun(float s), int fun(float s), public int fun(float s),这几个方法是重载的么?

------解决方案--------------------
1,重写方法,子类的访问权限不低于父类
2,重载以参数列表的不同为区别,不考虑其他的东西。比如说,访问权限修饰符,如果都能访问到,则都可以调用,就构成重载,若是有的不可见,也不会影响。静态和非静态方法在调用环境和使用方式都不一样,不会构成重载。其实有一个定义是方法签名,主要是指参数列表,在调用方法是,考虑可不可以调用,有没有在编译时出错,如若没有则方法存在且调用正确,说明重载成功了。反之,则重载不成功。