重载(返回值不能作为判断依据) 和 重写
重载: 发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同。发生在编译期
注:不能根据返回值判断重载方法。与返回值类型无关,只看参数列表(参数的个数、参数的类型、参数的顺序)。
如下两个方法:
void f(){}
int f(){ return 1;}
只要编译器可以根据语境明确判断出语义,比如在int x = f();中,那么的确可以据此区分重载方法。不过,有时你并不关心方法的返回值,你想要的是方法调用的其他效果(这常被称为“为了副作用而调用”),这时你可能会调用方法而忽略其返回值,所以如果像下面的调用:
fun();
此时Java如何才能判断调用的是哪一个 f() 呢?别人如何理解这种代码呢?所以,根据方法返回值来区分重载方法是行不通的。
以上参考《Java 编程思想》
————————————————
版权声明:本文为CSDN博主「Daniel_Geng」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/GengFuming/article/details/80608145
重写: 发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为 private 则子类就不能重写该方法。
浙公网安备 33010602011771号