2012-05-10 3 views
28

Почему орудия всегда должны быть написано после того, как проходит в объявлении класса, например:Почему «проходит» предшествует «инвентарь» в объявлении класса

public class Register extends ActionSupport implements ModelDriven 

Почему не

public class Register implements ModelDriven extends ActionSupport 

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

+14

Так как это Java. –

+2

... потому что это способ, которым лексер называет это? – Makoto

+0

Сью Oracle для этого =) – 4lex1v

ответ

58

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

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

+2

+1 Наконец, здравый ответ. Спасибо. :) – weltraumpirat

+4

Я делаю все возможное. В конце концов, мы все вместе! –

+2

@ NathanielFord, неужели мы действительно? Я был очень дезинформирован. – jn1kk

5

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

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

+0

Что-то типа 'C'. Поскольку код читается больше, чем письменная многословие имеет преимущества. –

+0

Это не конвенция. Это правило синтаксиса. Условные обозначения, которые вы можете игнорировать, приводятся в действие компилятором. –