方法名,参数相同形成重写,重写的方法不能降低原方法的"可见度",也不能改变原方法的返回值类型。
方法名相同,参数不同(个数、类型)形成重载,重载的方法可看成一个全新的方法,与原方法相比它可以有不同的"可见度"和“返回值类型”。如下例:
class A {
protected int method1(int a, int b) { return 0; }
}
public class B extends A{
public int method1(int a, int b) { return 0; } //正确,重写父类方法,可以扩大访问权限
//private int method1(int a, int b) { return 0; } //错误,重写父类方法,不能降低了访问权限
//private long method1(int a, int b) { return 0; } //错误,重写父类方法,不能改变返回值类型
public short method1(int a, long b) { return 0; }//正确,重载自身的方法,可以有不同的访问权限和返回值类型
private int method1(int a, long b) { return 0; }//正确,重载自身的方法,可以有不同的访问权限和返回值类型
}
但这里 方法public short method1(int a, long b) { return 0; }和 方法private int method1(int a, long b) { return 0; }不能同时存在,因为在同一类中,不允许存在相同名字和参数类型的方法(重写的方法)。
本文详细解析了方法重写与重载的概念及其规则。重写发生在继承关系中,要求子类方法不能降低父类方法的可见度及改变其返回类型;而重载则允许在同一类中通过更改参数来定义多个同名方法,并可调整方法的可见度及返回类型。
669

被折叠的 条评论
为什么被折叠?



