2

重複の可能性:
コンストラクターを明示的に呼び出している間は、インスタンスメソッドを参照できません

私は長い間これをやろうとしてきました。

public class bb extends test {

    int t = 23;

    public bb() {
        super(t); //**This is the place that error comes**
        // TODO Auto-generated constructor stub
    }

    public bb(int v) {
    }
}

public class test {

    public test() {
        // TODO Auto-generated constructor stub
    }

    public test(int v) {
        // TODO Auto-generated constructor stub
    }
}

コントローラクラス

class s {   
    public static void main(String[] args) {

        bb sd = new bb();
        System.out.println("sdfsdfsdfd");
    }
}

これが発生するエラーです。インスタンス変数をスーパークラスコンストラクターに渡せない理由を知りたいのですが?コンストラクターにアクセスできるインスタンスがないためだと思います。

スレッド「main」の例外java.lang.Error:未解決のコンパイルの問題:コンストラクターを明示的に呼び出している間、インスタンスフィールドtを参照できません

4

1 に答える 1

9

その変数を変数として作成すると、staticそのエラーは消えます。これは、次の理由で発生します。

Instance Variablesコンストラクターが呼び出されると作成されますが、この場合は、

child's constructorその親コン​​ストラクタが実行されます。これは、のインスタンス変数/オブジェクトを意味します。

子クラスはヒープに存在しません。言い換えれば、それらはまだ構築されていません。

static variablesそれらの最初のものが実行されるので、それらはいくつかの値を持っており、それは機能します

完全に元気です。

于 2011-08-02T05:29:06.367 に答える