在C语言中,每个函数及其调用都有极其明确的对应关系,形参与实参的数据类型必须严格相同。 但是在Java中,为避免函数过多而导致的一系列形参实参类型混淆的问题,前辈们提出了方法重载的编程手段。
public void setPoint(int x
, int y
) {
setRow(x
);
setCol(y
);
}
public void setPoint(int x
) {
setPoint(x
, 0);
}
public void setPoint(SimplePoint source
) {
setPoint(source
.row
, source
.col
);
}
对方法重载可以理解为对相同作用的方法,为了达到对任意参数都可以调用的目的(类似println()不需要参数即可输出回车), 我们可以写多种参数对应的该函数解决方法以达到目的。 因为重载需要函数名相同,这样难道不会发生互译性么? 实际在方法定义时,java底层对于不同参数个数及类型所得出的方法名称是不同的,所以不会发生错误。
方法重载的基本规则: 1.方法名称相同; 2.参数个数或者参数类型不同; 3.返回值类型的差异不是方法重载的决定因素; 4.构造方法也可以重载,只要满足前两点规则。
通过方法重载,每一个编程者都应该有一种思想“辛苦我一人,幸福千万家”。辛苦一人的意思是编程者应多想可能发生的方法重载情况并且给出对应措施,这样“千万家”就不会被形参实参的繁琐所打扰。