什么是重载???
类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于给定的参数。
重载方法必须满足以下条件:1、方法名相同。
2、方法的参数类型、个数、顺序至少有一项不相同。
3、方法的返回类型可以不相同。
4、方法的修饰符可以不相同。
下面以一道题来加深一下大家的理解,若你能全部想明白那么,基本上重载这件小事也就不足畏惧了!
题:以下Sample类中已经定义了一个amethod()方法:
public class Sample{
public void amethod(int i, String s){}
//加入其他方法
}
下面哪些方法可以加入到Sample类中,并且保证编译正确呢?
A)public void amethod(String s, int i){} //可以
B)public int amethod(int i, String s){return 0;} //不可以
C)private void amethod(int i, String mystring){} //不可以
D)public void Amethod(int i, String s) {} //可以
E)abstract void amethod(int i); //不可以
想明白为什么了吗?简要说明一下为什么B和E不可以吧。
对于B来说,只有返回值不一样,一个是void,一个是int,而编译器在编译的时候只看方法名和参数,所以两者在编译的时候会冲突的,故不可以。
对于D来说因为抽象方法必须只能定义在抽象类里,所以同样错误。