2012-05-10 7 views
28

Por qué instrumentos siempre deben escribirse después se extiende en la declaración de la clase, por ejemplo:¿Por qué "se extiende" precede a "instrumentos" en la declaración de la clase

public class Register extends ActionSupport implements ModelDriven 

Por qué no

public class Register implements ModelDriven extends ActionSupport 

es un error de tiempo de compilación

+14

Porque así es como Java es. –

+2

... porque esa es la forma en que lo ordena el lexer? – Makoto

+0

Sue Oracle para esto =) – 4lex1v

Respuesta

58

Cuando el compilador de Java se convierte en una clase de código de bytes, primero debe mirar a una clase padre. Esto se debe a que la implementación subyacente de las clases apunta al código de bytes de la clase padre, que contiene los métodos y campos relevantes. Luego agrega punteros al código de las funciones de la clase hija, algunas de las cuales son obligatorias por la palabra clave 'implements'.

Debido a que la clase padre debe ser compilables, es más fácil si el compilador sabe por adelantado lo que es la clase. Además, puede extender solo una clase pero implementar cualquier cantidad de interfaces. El tiempo de compilación aumenta si la palabra clave extends se puede mezclar entre cualquier cantidad de instrucciones de implements. Los compiladores quieren fallar lo más rápido posible para disminuir el tiempo de desarrollo, por lo que esta opción es lógica. Además, te ayuda a pensar con claridad sobre la clase por la misma razón.

+2

+1 Finalmente una respuesta sensata. Gracias. :) – weltraumpirat

+4

Hago mi mejor esfuerzo. ¡Después de todo, estamos todos juntos en esto! –

+2

@NathanielFord, ¿estamos realmente? He sido muy mal informado. – jn1kk

5

Probablemente para hacer el trabajo del compilador más fácil. Es solo una convención. No hay ninguna ventaja de poder reorganizar estas cosas.

Es como preguntar por qué las funciones de Java no se escriben en notación pre-orden como public int (int a, int b)add{ return a+b; }.

+0

Algo de 'C'. A medida que el código se lee más de lo que la verbosidad escrita tiene beneficios. –

+0

No es una convención. Es una regla de sintaxis. Convenciones que puede ignorar, las reglas son impuestas por el compilador. –

Cuestiones relacionadas