這系列博文主要是將自己之前學習的一些java基礎內容進行歸納與總結。
方法
定義:在類中具有特定功能的一段獨立的程序。
組成:訪問修飾符 非訪問修飾符 返回值 方法名 (形參…){ // 方法體 return 返回值}
public static void printName(String name){
System.out.println(name);
return;
}
修飾符 :
訪問修飾符(public 、protected、default、private)
非訪問修飾符(static、final、abstract、synchronized)
關鍵字:
void (表明該方法沒有返回值)
return (用於結束方法並將結果返回給調用者)
方法的重載
一個類中出現同名的方法,只要它們的參數個數或者對應位的類型不同,就叫做重載,與返回值類型和修飾符無關
例:
public String getName(Integer val, String val2){
return val + val2;
}
public String getName(String val2, Integer val){
return val2 + val;
}
匹配優先級
public static void main(String[] args) {
overload(1);
}
// (1) 精確匹配
public static void overload(int param){
System.out.println("第一級匹配");
}
// (2) 如果是基本數據類型,通過向上轉型匹配
public static void overload(long param){
System.out.println("第二級匹配");
}
// (3) 通過自動裝箱匹配
public static void overload(Integer param){
System.out.println("第三級匹配");
}
// (4) 通過向上轉型並裝箱匹配
public static void overload(Long param){
System.out.println("第四級匹配");
}
// (5) 通過子類向上轉型繼承線路依次匹配
public static void overload(Object param){
System.out.println("第五級匹配");
}
// (6) 通過可變參數匹配
public static void overload(Integer ...param){
System.out.println("第六級匹配");
}
方法的重寫
當子類中出現和父類一模一樣的方法時,子類對象運行的是子類的方法,這種現象稱之爲重寫
子類重寫父類的方法必須遵從“兩同兩小一大”的規則
兩同:即方法名,形參列表相同
兩小:即子類返回值類型和異常要小於等於父類(這裏的比較是指繼承關係)
一大:子類的訪問修飾符要大於等於父類的訪問修飾符(這裏的比較是指訪問權限)
public class Father {
protected Number getAge(int i) throws Exception{
return 50;
}
}
class Son extends Father{
@Override
public Integer getAge(int i) throws RuntimeException {
return 25;
}
}
被static、final、private修飾的成員不能被重寫
靜態方法不具備多態性,如果子類有和父類一樣的靜態方法,只是把父類的方法隱藏了並不是重寫
public static void main(String[] args) {
Father f = new Son();
try {
// 還是執行父類方法,如果是重寫根據多態執行的應該是子類的方法
System.out.println(f.getAge(0)); // 50
} catch (Exception e) {
e.printStackTrace();
}
}