[英]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.