Pourquoi implement
doit-il toujours être écrit après extend
dans une déclaration de classe? Par exemple:
public class Register extends ActionSupport implements ModelDriven
Pourquoi cela ne peut-il pas être:
public class Register implements ModelDriven extends ActionSupport
Ce dernier produit une erreur de compilation.
Lorsque le compilateur Java transforme une classe en bytecode, il doit d'abord rechercher une classe parente. En effet, l'implémentation sous-jacente des classes doit pointer vers le bytecode de la classe parente - qui contient le Il ajoute ensuite des pointeurs au code des fonctions de la classe enfant - dont certaines sont mandatées par le mot clé "implements".
Parce que la classe parente doit être compilable, il est plus facile si le compilateur sait d'avance ce qu'est cette classe. De plus, vous ne pouvez étendre qu'une seule classe mais implémenter un nombre illimité d'interfaces. Le temps de compilation grimpe si le mot-clé extend peut être mélangé entre un certain nombre d'instructions implements. Les compilateurs veulent échouer le plus rapidement possible pour réduire le temps de développement, ce choix est donc logique. De plus, cela vous aide à penser clairement à la classe pour la même raison.
Probablement pour faciliter le travail du compilateur. C'est juste une convention. Il n'y a aucun avantage à pouvoir réorganiser ces choses.
C'est comme demander pourquoi Java ne sont pas écrites en notation de pré-commande comme public int (int a, int b)add{ return a+b; }
.