在以對象為導向的編程的領域中,具有多個接口
了解此概念,讓我們考慮以下示例:
在這種情況下,測試同時實現A和B,並且兩個接口都定義了具有相同簽名的名為F()的方法。通過在測試中覆蓋此方法,該類有效地覆蓋了兩個接口的F()方法,即使僅存在一個@Override註釋。
這是因為Java的繼承規則決定了具有相同簽名的方法,被認為是“超級等值”。結果,編譯器選擇了它遇到的第一個覆蓋方法,無論其接口來源如何。此外,如果衝突的方法具有不同的返回類型,則可能會出現不相容性。在這種情況下,編譯器將報告一個錯誤,因為不可能具有兩種具有相同簽名的方法,但在同一類中都不同。
為了說明這一點,讓我們將示例修改為以下內容:interface A { int f(); } interface B { int f(); } class Test implements A, B { @Override public int f() { return 0; } }結論是,當類實現多個以上等效方法實現多個接口時,編譯器識別僅實現的方法,並且對所有接口的 @override notation都適用於所有接口。但是,方法簽名之間的不兼容會導致編譯錯誤。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3