方法重载和方法重写是初学者最常见的问题之一。下面我将已例子的形式来解释这两个名词在Java中的区别(仅个人理解,大神们可以多多指点)
这里也要感谢老大对这一个问题的详细解答http://v.youku.com/v_show/id_XNjAwMTQwODIw.html
例:下面那几个方法是 public void method(){...}的重载方法?
A)public void method( int m){...}B)public int method(){...}
C) public void method2(){...} D)public int method(int m, float f ){...}
这种题大家在期末考试和笔试的时候经常会遇到,那我们就来看构成重载的条件
一、方法名称必须相同
二、方法返回值可以不同
三、方法的参数类型可以不同(参数的个数,参数的类型,参数的顺序)
依靠上面几个结论,我们看到A是方法的参数类型不同,B方法返回值不同(在Eclipse中不能被编译通过), C方法名称相同(错误),D是方法类型和返回值都不同
所以正确答案是AD
方法重载是用于一个类中对同一方法不同的修饰罢了,举个例子
public class Person {
public void method(){
System.out.println("This is method()");
}
//方法参数个数不同
public void method(int age){
System.out.println(age+"岁了");
}
//方法参数类型不同
public void method(String name){
System.out.println("她的名字叫:"+name);
}
public void method(String name,int age){
System.out.println(name+"的岁数是"+age);
}
//方法参数顺序不同
public void method(int age,String name){
System.out.println(age+"岁的"+name);
}
public static void main(String[] args) {
Person mt = new Person();
mt.method();
mt.method(5);
mt.method("Lina");
mt.method("Jack", 8);
mt.method(5, "Bob");
}
}
注意:参数名字不同,不能算作参数不同
比如
public void method(int age){
}
public void method(int id){
}
方法重载的使用能够更好的保持程序的健壮性,这也是面向对象语言的一个重要特征之一。