2016-08-16 26 views
0

可以說我有幾個類,我試圖調用我的超類中的一個方法,並且發生此錯誤。我無法理解爲什麼?在superconstructor被調用之前不能引用'method'

文件1:

public class A extends B { 
    public A(int arg1){ 
     this(arg1, new class_C(getMethod())); // Throws error here 
    } 
    public A(int arg1, int arg2){ 
     super(arg1) ; 
    } 
} 

文件2:

public class B{ 
    public B(int arg1){ 
     super(arg1) ; 
    } 
    public int getMethod() { return 100;} 
} 

感謝您的幫助。

+3

如果'getMethod()'可以變成靜態的,那就這樣做。如果不能,這意味着它取決於'this'的狀態,在施工完成之前這是無效的。 – shmosel

+0

B的父類是什麼? – ravthiru

回答

2

這裏有很多錯誤。

  • B類getMethod的退貨類型是什麼?
  • 爲什麼你在B類中調用super(arg1)?你有沒有定義過B類的父類?
  • class_C的定義是什麼?

您最好爲您的問題提供一個MCVE

+0

我假設'class_C'不是'int';) –

1

在java中,必須首先調用構造函數。在你的代碼中,B類中的getMethod在其構造函數被調用之前被調用。 如果在java中允許這樣做,它會搞亂它的初始化。

相關問題