Почему это () и Super () должны быть первым утверждением в конструкторе?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему это () и Super () должны быть первым утверждением в конструкторе?

Сообщение Anonymous »

Java требует, чтобы, если вы называете это () или super () в конструкторе, это должен быть первое утверждение. Почему? < /P>
Например: < /p>

Код: Выделить всё

public class MyClass {
public MyClass(int x) {}
}

public class MySubClass extends MyClass {
public MySubClass(int a, int b) {
int c = a + b;
super(c);  // COMPILE ERROR
}
}
Солнечный компилятор говорит: Call to Super должен быть первым оператором в конструкторе . Компилятор Eclipse говорит: вызов конструктора должен быть первым оператором в конструкторе .
Однако вы можете обойти это, повторно воспроизведя код немного:

Код: Выделить всё

public class MySubClass extends MyClass {
public MySubClass(int a, int b) {
super(a + b);  // OK
}
}
< /code>
Вот еще один пример: < /p>
public class MyClass {
public MyClass(List list) {}
}

public class MySubClassA extends MyClass {
public MySubClassA(Object item) {
// Create a list that contains the item, and pass the list to super
List list = new ArrayList();
list.add(item);
super(list);  // COMPILE ERROR
}
}

public class MySubClassB extends MyClass {
public MySubClassB(Object item) {
// Create a list that contains the item, and pass the list to super
super(Arrays.asList(new Object[] { item }));  // OK
}
}
Итак, это не мешает вам выполнять логику до вызова super () . Это просто мешает вам выполнять логику, что вы не можете вписаться в одно выражение. Компилятор говорит, что вызов к этому должен быть первым оператором в Constructor .
Почему у компилятора есть эти ограничения? Можете ли вы привести пример кода, где, если у компилятора не было этого ограничения, произошло бы что -то плохое?

Подробнее здесь: https://stackoverflow.com/questions/116 ... onstructor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»