2013-10-23 91 views
0

所以我有A類擴展類B,B類擴展JInternalFrame,B有一個方法myMethod(在我的例子中myMethod將一個訂單系統轉換爲十進制數)。現在我想在類A中的方法中使用類B中的myMethod,但是當我嘗試調用super.myMethod()時,它說未找到myMethod(),並且當我查看所有顯示後的方法時鍵入「super」,這些方法都是JTable方法(如果我控制從下拉列表中選擇任何方法,我將轉到JTable.java)。如何調用在Java中有另一個父類的父類方法?

我已經嘗試在類A中創建一個B然後使用B.myMethod(),這個工程,但有沒有辦法在類A中調用myMethod而不是B?

public class B extends JInternalFram{ 
    constructor(){ 
    } 
    public myMethod(){ 
     //does conversions here 
    } 
} 


public class A extends B{ 
    constructor(){ 
    } 
    public anotherMethod(){ 
     //needs to use b.myMethod(); 
    } 
} 

感謝

+3

假設你沒有覆蓋它,這有什麼錯只是調用'myMethod的()'? – rgettman

+0

聽起來您的環境不同步,請刷新所有內容並重試。還要確保myMethid是公開的 – Todoy

+0

顯然你沒有把完整的代碼,因爲上面不會編譯。確保myMethod處於A類的正確範圍內以查看它。 – wxkevin

回答

0

MMMMM林不知道,但你的arent缺少的返回類型?

嘗試改變:

public myMethod(){//does conversions here} 

有了:

public void myMethod(){//does conversions here} 

記住:

一般情況下,一個方法的語法如下:

modifier returnValueType methodName(list of parameters) { 
    // Method body; 
} 

修飾符:修飾符,這是可選,告訴編譯器如何調用該方法。這定義了該方法的訪問類型。

返回類型:方法可能會返回一個值。 returnValueType是方法返回值的數據類型。一些方法執行期望的操作而不返回值。在這種情況下,returnValueType是關鍵字void。

方法名稱:這是方法的實際名稱。方法名稱和參數列表一起構成方法簽名。

參數:參數就像一個佔位符。當一個方法被調用時,你傳遞一個值給參數。該值被稱爲實際參數或參數。參數列表是指方法參數的類型,順序和編號。參數是可選的;也就是說,一個方法可能不包含任何參數。

方法體:方法體包含一組語句,這些語句定義了方法的作用。

0

希望這有助於 -

所有的
public class B extends JInternalFram{ 
    B(){ 
    } 
    public void myMethod(){ 
     //does conversions here 
     System.out.println("Inside myMethod of B"); 
    } 
} 


public class A extends B{ 
    A(){ 
    } 
    public void anotherMethod(){ 
     //needs to use b.myMethod(); 
     myMethod(); 
    } 
} 
0

首先,用void作爲兩種方法的返回類型,否則JVM認爲這是一個構造函數。回到主要問題,爲什麼不使用super.myMethod()

再見, Ĵ