2011-08-02 4 views
1

Possible Duplicate:
Cannot refer to a instance method while explicitly invoking a constructorПочему мы не можем передать переменную экземпляра в конструктор суперкласса?

Я пытался это сделать в течение длительного времени.

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"); 
    } 
} 

Это ошибка, которая приходит. Я хочу знать, почему переменная экземпляра не может быть передана конструктору суперкласса? Я подозреваю, что это потому, что нет экземпляра, доступного конструктору.

Исключение в потоке «основной» java.lang.Error: Нерешенные проблемы компиляции: не может ссылаться на поля экземпляра т, а в явном вызове конструктора

ответ

7

Если вы сделаете это переменные как static переменная, ошибка исчезнет .. это происходит потому, что

Instance Variables созданы когда-то его конструктор вызывается, но здесь, в этом случае перед

child's constructor его родительский конструктор запускается на выполнение .. что означает переменные экземпляра/объект

класс ребенка не существует в куче. или другими словами, они не построены еще .. но в случае

из static variables они первые один получает выполняется таким образом, они имеют несколько значений и работает

прекрасно ..

+0

я до сих пор есть проблемы Я буду ссылаться на него, используя новый вопрос ... Спасибо за все – Chan

Смежные вопросы