標籤:
一、重載、覆蓋與隱藏
1.重載
每個方法都有一個由方法名稱和參數列表組成的簽名,同一個類中不能出現相同簽名的方法,對於相同名稱但參數列表不同的方法稱為重載。
2.覆蓋
子類可以繼承父類中除了構造方法之外的所有方法以及所有屬性,當然對於父類中private的屬性和方法,子類繼承來了也是不能訪問的;
對於執行個體方法,在子類中如果出現一個和父類中繼承來的方法相同簽名的方法,則從父類中繼承來的該方法被覆蓋,在子類中覆蓋父類中的方法時,不能降低方法的可見度,且傳回型別與父類中方法傳回型別相同或者是其子類型。使用覆蓋是為了在子類中更改從父類中繼承來的某個方法的預設實現;
對於父類中private、final、static的方法,子類不能覆蓋。
3.隱藏
對於父類中的屬性,是沒有覆蓋這一說的,覆蓋的概念是對於方法而言的,子類中若出現與父類中同名的屬性,則父類中屬性被隱藏了;
4.對於private方法,若在子類中出現與父類中相同簽名的方法,這並不是覆蓋,實際上子類中的方法完全是另一個新方法。
二、this和super
1. this
類中每個非static方法都有一個隱藏的參數this,this指向當前調用方法的對象執行個體,因此當方法的參數名稱和屬性名稱相同時,常使用this引用屬性;
this還有一個用法,是在構造方法的第一行調用類中其它的構造方法。
2. super
super用來在子類中引用父類中被覆蓋的方法;
super用來在子類中訪問父類中被隱藏的屬性;
super用來在子類的構造方法中的第一行調用父類中的構造方法。
三、static關鍵字
1.static屬性
static屬性工作表示一個類的所有執行個體對象共用同一個屬性,static屬性可以直接通過類名訪問。
2.static方法
static方法是一種不能向對象實施操作的的方法,static方法則沒有隱藏的參數this,因此無法對對象執行個體做出修改,但是可以操作static屬性和調用其他的static方法;
static方法可以直接通過類名來調用,也可以通過執行個體對象來調用,普通方法必須通過執行個體對象來調用;
static方法不能被覆蓋。
Java物件導向