java⽅法重载的返回值类型_java⽅法的重载与覆盖的返回值类
public class A extends B{
//下⾯的是⽅法的覆盖(重写overRiding)
public void riding(){
System.out.println("this is overRiding ");
}
//下⾯两个函数是⽅法的重载(overLoading),但是返回值类型不同,可以运⾏
public String loading(int x){
System.out.println("this is overLoading return String");
return null;
}
public int loading(int x,int y){
System.out.println("this is overLoading return int");
return 0;
}
public static void main(String[] args) {
A a = new A();
a.riding();
a.loading(2);
a.loading(2,3);
}
}
class B{
public void riding(){
System.out.println("this is B");
}
}
下⾯是运⾏结果:
this is  overRiding
this is overLoading return String
this is overLoading return int
有以上程序可以知道,⽅法的重载是可以改变返回值类型的,但是尚不能说明⽅法的覆盖是否可以改变返回值类型,现在修改A类java重写和重载的区别
中 riding()⽅法的返回值类型为int,
public int riding(){
System.out.println("this is  overRiding ");
}
此时会有如下的错误:
由此可知,⽅法的覆盖是不允许修改返回值类型的。
以上测试程序运⾏在JDK1.5版本。
我对此的解释为:
⽅法的重载是根据函数的参数列表来决定的,即:参数列表的个数,类型,顺序三个⽅⾯;
对于其返回值类型,就是改变了也不会有影响,因为你不可能写成参数类表相同(个数,类型,顺序)的⽅法重载,因为那根不就不是重载。所以返回值类型也就不能作为程序运⾏时选择函数的⼀个标准,因此返回值类型也就没了对函数选择时的影响。
⽅法的覆盖不仅根据函数的参数列表还要根据返回值类型,因为覆盖的⽅法的标志必须要和被覆盖的⽅法的标志完全匹配,才能达到覆盖的效果;
覆盖时还有“类型的提升”这⼀点,具体可以参考
总结如下:
⽅法覆盖必须满⾜下列条件 (1) ⼦类的⽅法的名称及参数必须和所覆盖的⽅法相同 (2) ⼦类的⽅法返回类型必须和所覆盖的⽅法相同 重载⽅法必须满⾜下列条件 (1) ⽅法名必须相同 (2) ⽅法的参数签名必须相同 (3) ⽅法的返回类型和⽅法的修饰符可以不相同

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。