Java中的方法是指類中定義的函數(shù)。方法是可以重載的,也可以被子類重寫(xiě)。重載與重寫(xiě)是Java中最常用的方法,但重載和重寫(xiě)概念相似,容易造成混淆。
Java中的重載是指在同一個(gè)類中定義了兩個(gè)或兩個(gè)以上的方法,它們的方法名相同,但參數(shù)列表不同。就是說(shuō),重載方法的方法名必須相同,但參數(shù)類型或者參數(shù)個(gè)數(shù)不同,讓方法的參數(shù)更加靈活、多樣化。例如,下面的代碼就是一個(gè)方法的重載:
public class Overload{ public void add(int a,int b){ System.out.println(a+b); } public void add(int a,int b,int c){ System.out.println(a+b+c); } public static void main(String[] args){ Overload demo = new Overload(); demo.add(2,3); demo.add(2,3,4); } }
Java中的重寫(xiě)是指子類定義了與父類中方法名、參數(shù)個(gè)數(shù)相同,但是具體實(shí)現(xiàn)不同的方法。重寫(xiě)方法不能有比被重寫(xiě)方法更嚴(yán)格的訪問(wèn)權(quán)限,只能更寬松,例如,可以由protected重寫(xiě)成public。這里有一個(gè)重寫(xiě)方法的例子:
public class Animal{ public void move(){ System.out.println("Animals can move"); } } public class Dog extends Animal{ public void move(){ System.out.println("Dogs can run and bark"); } public static void main(String[] args){ Animal a = new Animal(); Animal b = new Dog(); a.move(); b.move(); } }
在這個(gè)例子中,Dog重寫(xiě)了Animal中的move()方法。當(dāng)調(diào)用Animal類對(duì)象的move()方法時(shí),輸出“Animals can move”,當(dāng)調(diào)用Dog類對(duì)象的move()方法時(shí),輸出“Dogs can run and bark”。