Почему «extends» предшествует «Implements» в объявлении класса [закрыто]

Почему реализации всегда должны быть написаны после extends в объявлении класса, например:

<code>public class Register extends ActionSupport implements ModelDriven
</code>

Почему бы и нет

<code>public class Register implements ModelDriven extends ActionSupport 
</code>

это ошибка времени компиляции

 Makoto10 мая 2012 г., 18:09
@JohnGray: Нам не нужен еще один цирк Oracle, не так ли?
 Eng.Fouad10 мая 2012 г., 18:09
Почему бы и нет? ...... :)
 Nathaniel Ford10 мая 2012 г., 18:13
Из любопытства, почему порядок имеет значение для вас? Вы пытаетесь достичь чего-то, имея другой заказ?
 Dave Newton10 мая 2012 г., 18:07
Потому что такова Java.
 Makoto10 мая 2012 г., 18:07
... потому что это так, как это делает лексер?

Ответы на вопрос(2)

Решение Вопроса

Когда компилятор Java превращает класс в байт-код, он должен сначала обратиться к родительскому классу. Это связано с тем, что базовая реализация классов должна указывать на байт-код родительского класса, который содержит соответствующие методы и поля. Затем он добавляет указатели к коду функций дочернего класса, некоторые из которых предписаны «инструментами». ключевое слово.

Поскольку родительский класс должен быть компилируемым, проще, если компилятор заранее знает, что это за класс. Кроме того, вы можете расширить только один класс, но реализовать любое количество интерфейсов. Время компиляции увеличивается, если ключевое слово extends может смешиваться с любым количеством инструкций реализации. Компиляторы хотят как можно быстрее выйти из строя, чтобы уменьшить время разработки, поэтому этот выбор логичен. Кроме того, это помогает вам ясно думать о классе по той же причине.

 10 мая 2012 г., 18:15
Я делаю все возможное. В конце концов, мы все вместе!
 24 окт. 2018 г., 16:06
Боже мой, я рад, что кто-то дал конкретный ответ, а не мусор, как "потому что это - то, как Java", "... потому что именно так его предписывает лексер?". -_- Только отвлекает от сообщества.
 10 мая 2012 г., 18:13
+1 Наконец-то вменяемый ответ. Спасибо. :)
 10 мая 2012 г., 18:26
Если не следовать правилам в объявлении класса, возникает ошибка времени компиляции.
 10 мая 2012 г., 18:24
@NathanielFord, мы действительно? Я был сильно дезинформирован.

Возможно, чтобы упростить работу компилятора. Это просто соглашение. Нет никакой возможности иметь возможность переставлять эти вещи.

Это все равно, что спросить, почему функции Java не написаны в предзаказной записи, напримерpublic int (int a, int b)add{ return a+b; }.

 18 февр. 2018 г., 01:53
Это не соглашение. Это правило синтаксиса. Соглашения, которые вы можете игнорировать, правила соблюдаются компилятором.
 10 мая 2012 г., 18:47
Что-то изC, Поскольку код читается больше, чем написанное, многословие имеет преимущества.

Ваш ответ на вопрос