簡體   English   中英

當我嘗試在基類方法中調用子類方法時,為什么會出現錯誤?

[英]Why do I get an error when I try to call a subclass method inside a baseclass method?

這是我的代碼:

public class Main {
    public static void main(String args[]) {
        
        A a = new A();
        a.baseMethod();
        
    }
}

class B{
    
    public void baseMethod(){
        System.out.println("B");
        this.subMethod();   
    }
    

    
}

class A extends B{
    
    public void subMethod(){
        System.out.println("A");
    }

}

/MyClass.java:14: 錯誤:找不到符號 this.subMethod();
^ 符號:方法 subMethod() 1 錯誤

我認為“this”指的是對象“a”,如果我把它放在 main 中它可以工作,並且類 Main 不會看到類 A,而類 B 不會,那么為什么我不能調用子類方法? 非常感謝

實際上在這種情況下,超類(A 類)可以訪問駐留在基類(B 類)中的方法,但基類不能。 如果你想通過調用超類(A類)的對象來訪問基類(B類)的方法,你可以。 但是,如果要通過調用基類的對象來訪問超類(A 類)方法,則應該在超類中實現相同的方法簽名。 “this”關鍵字表示調用它的相同對象引用(在您的情況下是 B 類對象)。

在兩個類中具有相同簽名的方法(baseMethod)后,您可以通過A a = new A();對其進行測試A a = new A(); A b = new B(); .

繼續編碼:)

暫無
暫無

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

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