在子類和父類的關係中,如果子類中有定義和父類完全相同的方法或屬性的名稱,就稱為覆寫.
當子類定義了和父類在方法名稱,返回值型別,引數型別及個數完全相同的方法時,稱為方法的覆寫.
先演示沒有覆寫的操作,範例1:
class a
}class b extends a
public class demo
}
執行結果:
以上程式例項化的是子類物件,但由於子類中沒有print()方法,所以就使用從父類中繼承而來的print()方法.
下面實現方法覆寫,範例2:
class a
}class b extends a
}public class demo
}
執行結果:
當乙個類中的方法被覆寫後,如果例項化的是這個子類物件,則呼叫的方法就是被覆寫過的方法.
注意:子類被覆寫的方法的訪問控制許可權不能比父類更嚴格.(private錯例:
class a
}class b extends a
}public class demo
}
編譯結果:
通常,只要是方法,都是public.
當乙個子類覆寫了乙個父類方法時,子類若想呼叫父類的被覆寫過的方法,則要在方法前加"super".(如果子類沒有被覆寫,則可以寫this,this的執行過程是先從本類找,如果沒有再去父類找.super則是直接由子類呼叫父類的方法,不再找子類)
範例3:
class a
}class b extends a
}public class demo
}
執行結果:
注意:如果父類的方法名稱為private,則子類無法覆寫,也不會這樣去編寫**.
當乙個子類定義了和父類重名的屬性名稱時,就表示屬性的覆蓋.範例4:
class a
class b extends a
}public class demo
}
執行結果:
範例4的操作幾乎沒有意義,因從開發來講,屬性一定要封裝,封裝之後就沒有覆蓋這一概念了.
過載和覆寫的區別:
1.過載的方法名稱相同,引數的型別及個數不同;覆寫的方法名稱,引數型別及個數,返回值型別完全相同;
2.過載沒有許可權要求,被子類所覆寫的方法不能擁有比父類更嚴格的訪問控制許可權
3.過載發生在乙個類中,覆寫發生在繼承關係中.
Java覆寫詳解
覆寫 如果子類定義了與父類相同的屬性或方法,這個操作就稱為覆寫 方法的覆寫 子類定義了與父類方法名稱,引數型別,及個數完全相同的方法,但是覆寫不能有比父類更嚴格的訪問控制許可權 觀察簡單覆寫 package testoverride author weiwei description 簡單的覆寫 c...
物件導向 練習 十一
學生類 成員變數 name,age 構造方法 無參,帶兩個參 成員方法 get set show 輸出該類的所有成員變數值 b 給成員變數賦值 a set 方法 b 構造方法 c 輸出成員變數值的方式 a 通過get 分別獲取然後拼接 b 通過呼叫show 方法搞定 class demo4 stud...
JAVA 物件導向
this關鍵字只能在方法內部使用,表示 呼叫方法的那個物件 的引用。this 用於建構函式之間進行相互呼叫。語句只能定義在建構函式的第一行。static 靜態 使用注意事項 1.靜態方法只能訪問靜態成員。非靜態方法可以訪問靜態成員。2.靜態方法中不可以定義this,super關鍵字。因為靜態優先於物...