JAVA重写与重载
JAVA重写与重载
重写与重载,java中多态的表现之一,都是编译时多态,在程序编译阶段确定了方法属于哪一个类,哪一个实例。
重写:在子类和父类之间。
1 重写方法必须和被重写方法具有相同的参数列表,返回类型必须和被重写方法的返回类型相同或者是返回类型的子类型。
2 重写方法的访问控制修饰符不能比被重写方法更严格
3 final方法不能被重写
4 静态方法不能被重写,即实例方法才可以被重写
5 重写方法不能抛出新的检查异常,或者是抛出比被重写方法声明的检查异常更广泛的检查异常。
重载:一般值在同一个类中。
1 方法签名相同,参数列表必须不同。参数个数、顺序、类型不同都算不同。
2 返回类型、访问修饰符、异常声明可同可不同。
3 返回值不同,不能区分是否重载。
为什么子类不能和父类拥有同名但仅返回类型不同的方法?
首先返回值类型不同,这不是重写,其次,子类中方法不并非新定义的方法。如果是private的没有问题,反之,相当于同一个类中有同名不同返回值类型的两个方法。