簡體   English   中英

在Java中使用子類對象調用父方法

[英]Calling parent method using child class object in Java

有沒有辦法使用子類對象調用被子類覆蓋的父類方法? 我知道您可以在重寫的方法中使用 super.foo() 將調用重定向到父類方法,但是有沒有一種方法不涉及在調用父方法之前先進入子類方法?

不。

如果調用類Child的對象來執行x() ,那么在 Java 中,它的類 ( Child ) 負責提供正確的實現。 因此, Child類始終負責,並且在服務x()調用的過程中是否調用其父類方法由Child類唯一決定。

如果您發現子類實現不適合為x()調用提供服務的情況,那么這是Child.x()方法實現的一個錯誤,您必須修復該實現才能正確地為調用提供服務。

如果對於某些給定的調用參數,子類不能告訴如何正確地為調用提供服務,那么該方法的設計(作為調用者和被調用者之間的契約)就有缺陷,您應該清理它,例如制作兩個與x()不同的方法。

您不必從 foo() 的子類實現中調用 super.foo()。

public class Main {

    static class A {
        void foo() {
            System.out.println("A.foo()");
        }
    }

    static class B extends A {
        void foo() {
            System.out.println("B.foo()");
        }
        void bar() {
            super.foo();
        }
    }

    public static void main(String[] args) {
        B b = new B();
        b.bar();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM