學習筆記 覆寫(方法 屬性)

2021-09-29 01:16:59 字數 1679 閱讀 3222

定義:子類與父類產生繼承關係以後,會繼承父類的全部操作。如果子類發現父類不足進行補充修改,但是需要保留父類屬性和方法,就進行覆寫。

方法的覆寫:當子類定義了與父類方法名稱相同,引數型別及個數完全相同的時候就稱為覆寫。

例子:

class lianjie

}class lianjieshujuku extends lianjie

}public class jicheng

}

輸出結果:【子類】連線資料庫

由於例項化的是子類物件,所以優先呼叫的是覆寫以後的子類方法,如果子類沒有進行方法覆寫,則呼叫父類方法。覆寫的意義在於優化父類功能。

如果在進行方法覆寫之後,需要繼續呼叫父類方法,就需要使用super.方法( )

例子:

class lianjie

}class lianjieshujuku extends lianjie

}public class jicheng

}

輸出結果:

【父類】連線所有資源

【子類】連線資料庫

此時在覆寫過程中呼叫父類方法,即輸出子類覆寫以後的方法,又呼叫了父類以前的方法。

覆寫要求:覆寫的方法不能擁有比父類嚴格的訪問控制許可權。

已接觸過訪問控制許可權:public > default > private

如果父類定義了default型別,那麼子類只能使用default或者public定義。如果父類定義了public,那麼子類是能是public。

private既可以定義與屬性也可以定義於方法,但是覆寫時不使用private,例子如下:

class lianjie

public void sun()

}class lianjieshujuku extends lianjie

}public class jicheng

}

輸出結果:【父類】連線所有資源

此時子類物件a呼叫sun()方法,完全執行的是父類方法。覆寫此時無效,因為父類方法為private,覆寫時無法呼叫。

因為父類方法不可見,此時也不是覆寫,如果用super呼叫父類方法,程式會發生錯誤。覆寫時不牽扯private許可權。

定義:當子類定義了與父類相同名稱的成員的時候就稱為屬性覆蓋。

注意:·this在使用過程中,呼叫的物件是當前類中的屬性方法,如果當前類中沒有進行覆寫,則使用父類中的屬性方法。所以通過this呼叫本類中屬性進行覆寫,對於覆寫屬性必須放在本類方法之外。

·如果對父類進行封裝,則子類無法呼叫其屬性成員,但是可以通過定義public方法返回父類屬性成員,子類通過呼叫父類方法獲得父類成員屬性。

class lianjie

}class lianjieshujuku extends lianjie

}public class jicheng

}

子類定義了與父類相同的屬性,在方法使用過程中:

如果通過super呼叫屬性,則優先輸出父類屬性值;

如果使用this呼叫屬性,優先輸出本類中的屬性值;

如果直接輸出屬性值,則優先輸出本方法中的屬性值。(即最小花括號範圍內的值)

Swift學習筆記 函式 方法,屬性

從本節開始將敘述swift函式,方法,屬性等特性。func somefunction parameters returntype值得注意的是,函式支援多重返回,即返回多個值 func minmax array int min int,max int else ifvalue currentmax r...

Objective C 方法 屬性

1 2 3 4 5 6 7 8 9 10 11 12 import inte cefraction nsobject propertyintnumerator,denominator 宣告引數的屬性 合成器 void print 宣告列印引數方法 void setto int n over int ...

多型 方法 屬性

多型是針對方法而言的 animal cat new cat cat.say 呼叫的是子類的方法 方法看右邊 取決於建立物件的型別 system.out.println cat.name 呼叫的是父類的屬性 屬性看左邊 取決於定義變數的型別 system.out.println cat.getname...