2017-07-02 28 views
0

我自己的包中的主要方法只能看到其他包中的一些方法,即使它們都是公共方法。這是我的代碼的一個例子。我的主要方法無法在java中的其他包中看到所有公共方法

package stuff.code; 
    public class AObject 
    { 
     public AObject(); 
     public AObject(String str); 
     public int getLength(); 
     public int getHeight(); 
    } 

    package stuff.code; 
    public class BObject extends AObject 
    { 
     public BObject(); 
     public BObject(String str); 
    } 

    package stuff.test; 
    import stuff.code.AObject; 
    import stuff.code.BObject; 
    public class tester 
    { 
     AObject a = new AObject(); //no red underline 
     AObject aa = new AObject("some string"); //no red underline 
     BObject b = new BObject(); //no red underline 
     BObject bb = new BObject("some string"); //tells me there is no such constructor 
     b.getLength(); //tells me I need a getLine method in BObject too 
    } 

我看着setAccessible(布爾標記)方法,但我不明白的大部分,它仍然是不確定的我進口java.lang.reflect.AccessibleObject中之後。

這不是我的實際代碼。我想這是模糊的,所以對於遇到這個問題的許多其他人來說,答案會更有用。我的方法都是具體的身體,但身體不是問題。當一切都在同一個包中,但測試儀類必須位於不同的包中時,它運行良好。

+1

這是你的真實密碼?沒有主體的方法只能在抽象類或接口中工作,而不能在像AObject和BObject這樣的普通類中工作。難道是由於這些問題,這些類不再編譯了嗎?在測試中,你還在使用這些類的更新版本嗎? –

+1

如果它甚至沒有編譯,它如何「工作正常」? – c0der

+0

好點。我改變了它 –

回答

0

在BObject構造函數的第二次調用中,您傳遞了一個參數,而在它的類聲明中,它沒有任何參數。檢查一下。

+0

它接受一個字符串作爲參數 –

+0

它是接受一個參數而不是構造函數的方法。構造函數是默認情況下第一個猜測的,因爲看起來您已經命名了方法BObject和構造函數BObject,因此第一個被假定爲構造函數,並且不會接受任何參數。 – Hillux

+0

方法必須具有返回類型。 BObject()是一個沒有參數的構造函數。 BObject(String str)是另一個帶有一個參數的構造函數。它們具有相同的名稱並不重要,因爲它們具有不同的參數。這被稱爲構造函數重載。 –

相關問題