2013-03-15 93 views
0

大家好,我是新手。我的目的是從ByteArrayInputStream進行得到的byte [] buf絕對變量通過擴展它, 在這個http://www.java2s.com/Open-Source/Android/android-core/platform-libcore/java/io/ByteArrayInputStream.java.htm 告訴ByteArrayInputStream的沒有無參數的構造函數,但是當我代碼:Java ByteArrayInputStream隱式超級構造函數未定義。必須明確調用另一個構造函數

class Test extends ByteArrayInputStream { 
    public Test(int i){} 
} 

日食告訴我:隱超構造函數ByteArrayInputStream()未定義。必須顯式調用另一個構造函數。 在問我之前,我搜索谷歌然後得到這些:Java error: Implicit super constructor is undefined for default constructor,它告訴如果類B擴展類A,然後類A必須定義一個無參數構造函數。好的,這對我們編寫的課程來說很簡單,但是Sun的套餐中的課程怎麼樣?我也想知道這個問題。

在此先感謝。

回答

0

您的測試類應該至少有兩個構造函數:

public class Test extends ByteArrayInputStream { 
    public Test(byte[] buf) { 
     super(buf); 
    } 

    public Test(byte[] buf, int offset, int length) { 
     super(buf, offset, length); 
    } 
} 
2

兩個概念要記住:

  1. 在默認情況下,所有子類構造函數調用 超類的無參數的構造函數。
  2. 如果在類中定義了單個構造函數,那麼jvm不會提供無參數構造函數。

這裏,public Test(int i)會調用ByteArrayInputStream(),它不存在。所以你必須調用任何現有的ByteArrayInputStream構造函數在Test(int i)的第一條語句中,就像super(required_pa​​rameters);

相關問題